php – Nginx忽略客户端的HTTP 1.0请求并通过HTTP 1.1响应
我正在使用nginx / php5-fpm测试代码
<?php header($_SERVER["SERVER_PROTOCOL"]." 404 Not Found"); // also tested: header("Status: 404 Not Found"); echo $_SERVER["SERVER_PROTOCOL"]; 并强制使用带有curl命令的HTTP 1.0. curl -0 -v 'http://www.example.com/test.php' > GET /test.php HTTP/1.0 < HTTP/1.1 404 Not Found < Server: nginx < Date: Sat,27 Oct 2012 08:51:27 GMT < Content-Type: text/html < Connection: close < * Closing connection #0 HTTP/1.0 正如您所看到的,我已经在请求使用HTTP 1.0,但是nginx用HTTP 1.1回复了我 赏金 @MaximDounin,@ MichaelHampton已经提供了规范的答案,谢谢.我正在为未来的读者扩展这个问题: 问:当客户端请求HTTP 1.0时,响应HTTP 1.1有什么好处?谷歌采取的方法不应该更合理,即当客户请求1.0时,响应为1.0?
这是正常和预期的行为,according to RFC 2616:
RFC 2145 expands on this:
这意味着英语是:如果客户端发送HTTP / 1.0请求,则可以接受HTTP / 1.0响应或HTTP / 1.1,但首选HTTP / 1.1. 这样做的原因是一端可以通告它可以支持的最高版本的HTTP,以便另一端可以选择升级其协议支持(如果可能的话).然后,两端将决定他们可以使用的协议版本.正如RFC 2145所述,这种设计也有助于处理错误的实现. 当时还设想可能存在HTTP协议的其他版本,包括次要版本和主要版本,并且规则旨在帮助确保互操作性.一旦HTTP/2.0最终确定,谷歌的RFC无知方法可能会破裂. (你知道它的草稿形式是SPDY.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |