首頁 >後端開發 >Golang >為什麼我的Go開發伺服器的請求URL中Host和Scheme屬性為空?

為什麼我的Go開發伺服器的請求URL中Host和Scheme屬性為空?

DDD
DDD原創
2024-12-13 15:48:25218瀏覽

Why Are Host and Scheme Attributes Blank in My Go Development Server's Request URL?

開發伺服器上的空白Host和Scheme

在開發Go應用程式的初始階段,使用「hello, world」程式碼來熟悉框架是很重要的常見的。但是,當嘗試從請求 URL 存取 Host 和 Scheme 屬性時,您可能會遇到意外的空白值。為什麼會發生這種情況?

Go 的 HTTP 函式庫解析請求中的原始 URL。當您使用相對路徑存取伺服器時,例如:

GET / HTTP/1.1
Host: localhost:8080

URL 物件中的 Host 和 Scheme 欄位保持為空。

相反,當從代理存取伺服器時,使用這樣的絕對 URL:

GET http://localhost:8080/ HTTP/1.1
Host: localhost:8080

這會導致這些欄位的正確填充。

要取得HTTP 主機,請考慮直接使用 http.Request 結構體的 Host 屬性。

此外,您可以透過檢查IsAbs() 方法來確定URL 的類型(相對或絕對):

isAbsoluteURL := r.URL.IsAbs()

此檢查可以幫助區分這兩種情況並相應地指導您的程式碼邏輯。

以上是為什麼我的Go開發伺服器的請求URL中Host和Scheme屬性為空?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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