開發伺服器中的相對URL 存取
問題:
問題:答案:
r.URL 中缺少 host 和 schema 訊息,是由於開發時訪問伺服器時使用了相對 URL 導致的。與絕對 URL 不同,相對 URL 不指定主機或方案。
相對要求:
GET http://localhost:8080/ HTTP/1.1 Host: localhost:8080
通常,Web 瀏覽器會發出絕對請求,例如:
GET / HTTP/1.1 Host: localhost:8080
但是,當直接存取本機開發伺服器時,瀏覽器可能會使用相對的request:
在這個相對請求中,只指定了路徑,省略了host和scheme。因此,當伺服器收到此類請求時,r.URL.Host 和 r.URL.Scheme 將為空。
存取主機資訊:
host := r.Host
擷取這種情況下的主機信息,可以使用http.Request的r.Ho st屬性struct.
絕對請求(可選):
為了確保您始終收到絕對請求,您可以使用HTTP 代理程式。使用代理程式時,代理程式會將絕對請求轉送至伺服器,r.URL.Host 和 r.URL.Scheme 將包含預期值。
IsAbs() 檢查:
isAbsoluteURL := r.URL.IsAbs()
以上是為什麼 My Go 開發伺服器中的 r.URL.Host 和 r.URL.Scheme 為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!