HTTP请求标头必须包含哪些强制性信息?


Answers:


36

GET / HTTP/1.0 是合法的HTTP请求。

如果没有Host标头字段,那么如果目标服务器是一个没有自己的IP地址以与其他虚拟主机区分开来的虚拟主机,则可能无法获得期望的结果。

HTTP 1.1要求该Host字段。


1
我自己做了一些研究,您说得对@gbroiles。对于基于名称的虚拟主机,通常需要使用HTTP 1.1的浏览器。浏览器在主机头中发送主机名,并且Web服务器提供基于名称的虚拟主机(如果已配置)。对于较旧的浏览器和HTTP 1.0,这在某种程度上是可行的,但是您需要诸如apache的ServerPath指令之类的解决方法。幸运的是,较新的浏览器在使用HTTP 1.0时实现了扩展,以确保发送主机头字段。w3.org/Protocols/rfc2616/rfc2616-sec14.html
斯蒂芬·克里斯汀

1
仍然有实际使用HTTP 1.0的浏览器吗?
Pacerier

许多用户代理使用HTTP 1.0。使用网络浏览器的人将在可能的情况下使用HTTP 1.1或2.0,但他们可以通过仅支持HTTP 1.0的代理进行访问。爬网程序或漫游器可能使用HTTP 1.0。像这样的简单客户端wget使用HTTP 1.0。请注意,不需要服务器端来支持HTTP 1.0客户端,因为兼容HTTP 1.1的服务器将支持HTTP 1.0客户端(HTTP 1.1被构建为在HTTP 1.0之上的渐进增强功能;不兼容的功能(例如分块)对于HTTP 1.0请求,编码和保持活动默认为关闭)。
thomasrutter

3

请求中不需要任何HTTP标头。也没有必需的Response标头。

HTTP 1.1中的所有内容-RFC 2616


15
你误会了 根据您在此处链接的RFC:“客户端必须在所有HTTP / 1.1请求消息中包含主机标头字段”。因此,Host标头必需的。
user219882 2012年

2
正确,但是不要求客户端首先使用HTTP / 1.1。
克里斯·S

2
仅当实体随请求或响应一起交付时,内容长度或传输编码才是必需的,并且在许多情况下,请求或响应将缺少实体(例如GET请求或302响应)。
布兰登·罗兹

6
我不能拒绝投票,但这个答案是错误的。请修复或删除。
vikingsteve,2016年

4
我同意维京史蒂夫。您的答案暗示HTTP 1.1没有任何必需的标头。
nullstellensatz
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.