Вопрос о порядке заголовка в PHP (и HTTP в целом) - PullRequest
5 голосов
/ 19 января 2010

Есть ли в PHP определенный порядок установки заголовков HTTP с помощью функции header ()?

Я имею в виду, например, должен ли я вызывать заголовок («Content-Language: en»); перед заголовком ('Content-Type: text / plain'); или любой другой порядок будет в порядке.

Я предполагаю, что порядок не важен, если все заголовки установлены до вывода любого контента, но я просто хочу быть уверен, что это так ...

Ответы [ 2 ]

8 голосов
/ 19 января 2010

Нет, порядок полей заголовка не имеет значения:

Порядок получения полей заголовков с разными именами полей не имеет значения. Однако рекомендуется сначала отправлять поля общего заголовка, затем поля заголовка запроса или заголовка ответа и заканчивать полями заголовка объекта.

Только если вы отправляете несколько полей с одним и тем же именем. Тогда значения полей обрабатываются так, как если бы они отображались в одном списке:

Несколько полей заголовка сообщения с одним и тем же именем поля МОГУТ присутствовать в сообщении тогда и только тогда, когда все значение поля для этого поля заголовка определено в виде списка через запятую [т.е., #(values)]. ДОЛЖНО быть возможно объединить несколько полей заголовка в одну пару «field-name: field-value», не изменяя семантику сообщения, добавляя каждое последующее значение поля к первому, каждое из которых разделяется запятой. Порядок, в котором принимаются поля заголовка с одинаковым именем поля, поэтому важен для интерпретации объединенного значения поля, и поэтому прокси-сервер НЕ ДОЛЖЕН изменять порядок этих значений поля при пересылке сообщения.

Итак, следующее:

Cache-Control: private
Cache-Control: must-revalidate

будет эквивалентно:

Cache-Control: private, must-revalidate

И здесь это зависит от определения поля заголовка (здесь Cache-Control ), если порядок имеет значение.

4 голосов
/ 19 января 2010

Порядок получения полей заголовков с разными именами полей не имеет значения. Однако, это «хорошая практика» - сначала отправлять поля общего заголовка, затем поля заголовка запроса или заголовка ответа и заканчивать полями заголовка объекта.

http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2 (протокол передачи гипертекста - HTTP / 1.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...