如果我通过 netcat 发出 GET 请求而不指定 http 版本 - GET /
,我会收到来自服务器的响应,而无需等待我先发送任何标头和空行。但是如果版本在那里 - GET / HTTP/0.1
,它会正常运行,即使它是0.1
. 我测试了google.com
,apache.org
和microsoft.com
。它是由协议定义的吗?
这种形式的请求(GET /
没有版本)被早期版本的 HTTP 协议使用,称为 HTTP/0.9,它根本不支持标头。请参阅1991 年定义的原始 HTTP。
HTTP 1.0 ( RFC 1945 ) 和 HTTP 1.1 ( RFC 2616 ) 的后续规范需要 HTTP 1.0+ 实现来识别 HTTP 0.9 请求和响应(HTTP 1.1 的RFC 7230后来放弃了该要求)。
RFC 1945 规定:
HTTP 消息的版本由消息第一行中的 HTTP-Version 字段指示。如果未指定协议版本,则接收方必须假定消息采用简单的 HTTP/0.9 格式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句