2014-11-03 35 views
1

我看到某个地方的人做这样的事情:PHP同时发送HTTP 1.0和1.1头

<?php 
header('HTTP/1.0 200 OK'); 
header('HTTP/1.1 200 OK'); 
?> 

什么是这样做的目的是什么?似乎第二个将总是覆盖第一个头? 或者是因为如果有些客户端不支持http 1.1,所以他们仍然可以收到1.0头文件?

+0

我想不出有什么好的理由来做到这一点。如果客户不支持本世纪的HTTP 1.1,那么在网络上很少会有效。 – Quentin 2014-11-03 17:17:44

+0

你介意向我们展示你在哪里找到的? – Brad 2014-11-03 17:19:02

回答

1

这是没有目的的。只有一个HTTP状态行可以发送到客户端。

无论如何,默认是发送200 OK,所以除非你覆盖以前的状态行(这很奇怪),那么两行都是毫无意义的。

如果您使用PHP 5.4+,则应该使用http_response_code()来设置状态码。将协议实现留给Web服务器。

+0

如果在这种情况下客户端请求不支持1.1,会发生什么情况?他得到一个空头或收到1.0头? – Zeyang 2014-11-03 18:08:45

+0

@ Zeyang它不是标题,而是状态线。这与标题有点不同。总是会有一个状态线。使用的HTTP版本完全取决于上游服务器如何处理这类数据。它会因系统而异。您应该在您的特定配置中进行测试。在实践中,它并不重要,因为HTTP/1.1大多向后兼容1.0。 – Brad 2014-11-03 18:11:22

+0

对,我的意思是状态线。感谢您的详细解释。 – Zeyang 2014-11-03 18:16:35