假設發送HTTP請求時已經建立了TCP連接,IP地址和端口是隱式知道的 - TCP連接是IP +端口。那麼,我們需要Host
頭文件?這僅僅是在多個主機映射到TCP連接中隱含的IP地址的情況下才需要的嗎?什麼是http主機頭?
回答
該host
- 頭告訴網絡服務器哪個虛擬主機使用(如果設置)。您甚至可以使用幾個別名(=域和通配符域)來擁有相同的虛擬主機。在這種情況下,如果您希望根據所尋址的不同域提供不同的行爲,您仍然可以在Web應用程序中手動讀取該標題。這是可能的,因爲在你的web服務器上你可以(如果我沒有弄錯你必須)設置一個 vhost作爲默認主機。只要host
標頭不匹配任何配置的虛擬主機,就會使用此默認虛擬主機。
這意味着:雖然說「多個主機」可能有點誤導:主機(尋址的機器)是相同的,真正解決IP地址是不同的域名(包括子域名),也稱爲主機名稱(但不是主機!)。
雖然不是問題的一部分,但有趣的事實是:該規範在早期導致SSL出現問題,因爲Web服務器必須提供與客戶端已解決的域相對應的證書。但是,爲了知道要使用哪個證書,Web服務器應提前知道所提供的主機名。但是,由於客戶端僅通過加密通道發送該信息(這意味着:在證書已經發送之後),服務器必須假定您瀏覽了默認主機。這意味着:每個IP地址/端口組合一個SSL安全域。
這已經克服Server Name Indication,但是,再次打破了一些隱私,作爲服務器名以純文本格式,現在轉移了,所以每個人在這方面的中間人會看到,該主機名你想連接。
雖然網絡服務器可以知道服務器名稱指示中的主機名,但host
標頭並未過時,因爲服務器名稱指示信息僅用於TLS握手中。使用不安全的連接時,根本沒有服務器名稱指示,所以host
標題仍然有效(必要)。
另一個有趣的事實是:即使它可能被省略,因爲只有默認的虛擬主機配置,即使它可以被省略,大多數網絡服務器(如果甚至不是所有的)都拒絕你的http請求,如果它不包含一個host
-header。這意味着,在所需的最小的信息的基於HTTP(GET-)請求是含有METHOD
RESOURCE
和PROTOCOL VERSION
並且至少host
-header,像這樣的第一行:
GET /someresource.html HTTP/1.1
Host: www.example.com
您可能需要讀取MDN Documentation on the Host-Header有關更多信息,請參閱
主機頭字段必須在所有HTTP/1.1請求消息中發送。 A 400(錯誤請求)狀態碼將被髮送到任何HTTP/1.1請求 消息,該消息缺少Host頭字段或包含多個消息。
正如達雷爾米勒所說,完整的規格可以在RFC7230找到。
我總是建議在嘗試瞭解HTTP標頭的含義和目的時轉至權威來源。
在一個請求中的「主機」頭域提供的主機和端口從目標URI
信息,使源服務器
資源之間區分,同時在單個服務於對多種
主機名的請求IP地址。
- 1. 爲什麼Wget在HTTP請求中有主機頭?
- 2. 什麼是主機名?
- 3. 什麼是「原始HTTP頭」? 「HTTP標頭」和「原始HTTP標頭」有什麼區別?
- 4. 「Vary:Accept」HTTP頭的功能是什麼?
- 5. 什麼是所需的HTTP頭字段
- 6. 什麼是X-REMOVED HTTP標頭?
- 7. HTTP Accept頭中的「+」是什麼意思?
- 8. 什麼是http頭中的OpenNMS
- 9. 什麼是HTTP頭代表'x-auto-login'
- 10. 什麼是http標頭的編碼
- 11. http中Host頭的用法是什麼?
- 12. HTTP標頭是什麼If-None-Match:*是什麼意思?
- 13. 什麼是HTTP標頭?什麼是字符集?
- 14. PHP捲曲不包括主機http頭
- 15. 作爲路由值的HTTP主機頭
- 16. 爲什麼http代理是主機+端口
- 17. 基於虛擬主機的Rails路由(主機HTTP標頭)
- 18. 這是什麼WordPress主題http://www.geekgiftsunder50.com?
- 19. HttpContext.Current.Request.IsSecureConnection尋找什麼HTTP頭?
- 20. 在HTTP「主機」頭參數中是否需要端口號?
- 21. 我的Memcache主機是什麼?
- 22. 瞭解什麼主機是指泊塢
- 23. 什麼是RSA主機密鑰?
- 24. 在ECMAScript中,「主機設施」是什麼?
- 25. gitlab我的主機的FQDN是什麼
- 26. 什麼是「外部DNS主機」?
- 27. 「主機自舉」是什麼意思?
- 28. MonoTouch和NUnitLite:什麼是「主機」設置?
- 29. 什麼意思是ESX主機/硬件
- 30. 什麼是在delphi中的SMTP主機
優秀的信息 - 謝謝! – ineedhelp