Go語言 http 中的 request.Host 和 request.URL.Host 的區別


golang 中的例子

http 代碼:

http.ListenAndServe("localhost:9999", nil)

使用 curl 命令訪問:curl http://localhost:9999/_geecache/scores/Tom
則:

  • r.Host 是 localhost:9999,
  • r.URL.Host 是空字符串,
  • r.URL.Path 是 /_geecache/scores/Tom。

定義

r.URL 字段是通過解析 HTTP 請求 URI 創建的。
r.Host 字段是主機請求標頭的值。它與調用 r.Header.Get("Host") 的值相同。

如果網上的HTTP請求是:

GET /pub/WWW/TheProject.html HTTP/1.1
Host: www.example.org:8080

則:r.URL.Host 是空字符串,
r.Host 是 www.example.org:8080。

解釋

r.URL.Host 和 r.Host的值幾乎總是不同的。在代理服務器上,r.URL.Host 是目標服務器的主機,r.Host 是代理服務器本身的主機。當不通過代理連接時,客戶端不會在請求 URI 中指定主機。在這種情況下,r.URL.Host 是空字符串。

如果未實現代理,則應使用r.Host確定主機。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM