Вопрос

Есть много способов написать заголовок HTTP-статуса:

HTTP/1.1 404 Not Found
Status: 404
Status: 404 Not Found

но каков семантически правильный и совместимый со спецификацией способ?

Изменить. Под заголовками статуса я имею в виду этот , используя функцию такие как PHP header () .

Это было полезно?

Решение 3

Наиболее близкая вещь, которую я нашел к ответу - это Быстрая CGI-спецификация , в которой указывается установка кодов состояния через заголовки Status и Location.

Другие советы

Добавление некоторой информации через некоторое время, так как я столкнулся с этим вопросом, исследуя что-то связанное.

Я полагаю, что поле заголовка Status было изначально изобретено как часть спецификации CGI, RFC 3875:

https://tools.ietf.org/html/rfc3875#section- 6.3.3

Цитировать:

The Status header field contains a 3-digit integer result code that
indicates the level of success of the script's attempt to handle the
request.

   Status         = "Status:" status-code SP reason-phrase NL
   status-code    = "200" | "302" | "400" | "501" | extension-code
   extension-code = 3digit
   reason-phrase  = *TEXT

Это позволяет сценарию CGI возвращать код состояния на веб-сервер, который переопределяет значение по умолчанию, отображаемое в строке состояния HTTP. Обычно сервер буферизует результат из сценария и выдает новый заголовок для клиента. Этот заголовок является действительным HTTP-заголовком, который начинается с измененной строки состояния HTTP и не содержит сценариев " Статус: " поле заголовка (плюс некоторые другие преобразования, предусмотренные RFC).

Таким образом, все ваши примеры действительны из CGI-скрипта , но только первый действительно действителен в HTTP-заголовке. Последние два действительны только из сценария CGI (или, возможно, приложения FastCGI).

CGI-сценарий также может работать в «непарсированном заголовке»; (NPH) режим, когда он генерирует полный и действительный заголовок HTTP, который веб-сервер передает клиенту дословно. Таким образом, это не должно включать поле заголовка Status:.

Обратите внимание, что меня интересует то, что должен получить статус, если скрипт NPH немного ошибается и выдает поле заголовка Status: Status, возможно, в дополнение к строке состояния HTTP. Я не могу найти какой-либо четкой индикации, и я подозреваю, что это оставлено на усмотрение того, что анализирует вывод, либо клиента, либо сервера.

Поскольку http://tools.ietf.org/html/rfc2616#section-6 и, в частности, http://tools.ietf.org/html/rfc2616# в разделе 6.1 не упоминается использование " статуса: " при указании кода состояния и официального списка заголовков по адресу http: / /www.iana.org/assignments/message-headers/message-headers.xml не упоминает " Статус " ;, я был бы склонен полагать, что его не следует указывать в качестве заголовка.

Многие из них являются в значительной степени произвольными строками, но здесь есть спецификация w3c для часто используемых

http://www.w3.org/Protocols/rfc2616/rfc2616 -sec14.html

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top