404标头 - HTTP 1.0还是1.1?

kei*_*ant 20 header http http-status-code-404

为什么几乎我能找到的每个例子(包括大约一年前的这个问题)都说404标题应该是HTTP/1.0 404 Not Found我们真正使用HTTP 1.1超过十年的时候?有没有理由不发送HTTP/1.1 404 Not Found

(这并不重要......我大多只是好奇.)

Dan*_*Man 28

在PHP中你应该使用:

header( $_SERVER['SERVER_PROTOCOL']." 404 Not Found", true );
Run Code Online (Sandbox Code Playgroud)

甚至更好

header( $_ENV['SERVER_PROTOCOL']." 404 Not Found", true );
Run Code Online (Sandbox Code Playgroud)

(如果支持),从而将其留给Web服务器使用哪个协议.

实际上,如果你将状态代码作为第三个参数传递,你可以在第一个参数中传递你想要的任何东西,只要它不是空的,PHP将完成其余的工作.见http://php.net/header

header("foobar", true, 404 );
Run Code Online (Sandbox Code Playgroud)

另外:您不能从客户端请求某个协议版本,因为事务是基于逐跳的,而不是端到端的.服务器和浏览器可能很好地使用HTTP/1.1,但如果中间的代理仅使用HTTP/1.0,那么您将从客户端看到这一点.


mau*_*ris 6

HTTP版本的使用可以基于以下因素:

  • 您的Web服务器支持HTTP 1.0或1.1
  • Web浏览器支持HTTP 1.0或1.1
  • 您作为Web开发人员的偏好,使用哪种协议版本

现代浏览器可以同时支持1.0和1.1,客户端和服务器都可以满足最高版本的支持.可以找到2协议之间的主要区别:http://www8.org/w8-papers/5c-protocols/key/key.html

然而,404 Not Found的使用没有关键差异.但是要对整个网站保持一致.即如果您使用HTTP/1.1,则在整个网站中使用它.