如果 GET 请求中未指定 http 版本,为什么服务器不等待 http 标头?

萨沙尔姆

如果我通过 netcat 发出 GET 请求而不指定 http 版本 - GET /,我会收到来自服务器的响应,而无需等待我先发送任何标头和空行。但是如果版本在那里 - GET / HTTP/0.1,它会正常运行,即使它是0.1. 我测试了google.comapache.orgmicrosoft.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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章