在開發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中文網其他相關文章!