假设发送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