2014-11-03 78 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