首頁 >後端開發 >Golang >為什麼相對 HTTP 請求中 request.URL.Host 和 request.URL.Scheme 為空?

為什麼相對 HTTP 請求中 request.URL.Host 和 request.URL.Scheme 為空?

DDD
DDD原創
2024-12-17 01:33:23128瀏覽

Why Are request.URL.Host and request.URL.Scheme Blank in Relative HTTP Requests?

確定開發伺服器中的 URL 主機和方案:為什麼它們是空白?

從相對路徑存取 HTTP 伺服器時,如下所示在開發環境中很常見,某些 URL 屬性可能會顯示為空白。具體來說,request.URL.Host 和 request.URL.Scheme 可能會傳回空值。

為什麼會發生這種情況?

相對 HTTP 請求,通常由瀏覽器在以下情況下發出本機存取伺服器,缺乏明確的主機和方案資訊。這與 HTTP 代理程式使用的絕對 URL 形成對比,後者在請求中包含這些詳細資訊。對於相對請求,http.Request.URL 物件中僅提供原始 URL。

存取 HTTP 主機

要擷取 HTTP 主機,您可以存取 http.Request 結構的 Host 屬性。這提供了請求的 Host 標頭中指定的主機名稱和連接埠。

區分相對 URL 和絕對 URL

您可以透過呼叫來確定請求是使用相對 URL 還是絕對 URL http.Request.URL 上的 IsAbs() 方法。如果 IsAbs() 傳回 false,則 URL 是相對的,不包含主機或方案資訊。

使用 Netcat 的範例

要示範差異,您可以使用 netcat使用相對路徑傳送 HTTP 要求。

cat my-http-request-file | nc localhost 8080

my-http-request-file 應包含以下內容內容,格式為HTTP 請求:

GET / HTTP/1.1
Host: localhost:8080

此請求將在處理程序中傳回空白的r.URL. Host 和r.URL.Scheme 值。

以上是為什麼相對 HTTP 請求中 request.URL.Host 和 request.URL.Scheme 為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn