Всегда ли смысл, является ли порядок заголовков
A: 1
B: 2
против
B:2
A:1
Я пытаюсь выяснить, могу ли я использовать словарь для хранения списка заголовков или если это должен быть какой-то список или упорядоченный словарь.
Всегда ли смысл, является ли порядок заголовков
A: 1
B: 2
против
B:2
A:1
Я пытаюсь выяснить, могу ли я использовать словарь для хранения списка заголовков или если это должен быть какой-то список или упорядоченный словарь.
Нет, это не имеет значения для заголовков с разными именами. См. RFC 2616, раздел 4.2:
Порядок, в котором поля заголовка с разными именами полей полученных не имеет значения. Тем не менее, это "хорошая практика" для отправки сначала поля заголовка, затем заголовок запроса или ответ- полей заголовка и заканчивая полями заголовка объекта.
Это имеет значение, однако, для нескольких заголовков с тем же именем:
Несколько полей заголовка сообщения с тем же именем поля МОЖЕТ быть присутствовать в сообщении тогда и только тогда, когда все полевое значение для этого заголовочное поле определяется как список, разделенный запятой [например, # (значения)]. Он ДОЛЖЕН быть в состоянии объединить несколько полей заголовка в один Параметр "field-name: field-value", не меняя семантики сообщение, добавив каждое последующее значение поля к первому, каждый разделенных запятой. Порядок, в котором поля заголовка с одинаковыми поэтому имя поля является значительным для интерпретация комбинированного значения поля и, следовательно, прокси НЕ ДОЛЖЕН измените порядок этих значений поля при отправке сообщения.
Порядок заголовков не должен иметь значения. Могут быть "более слабые" реализации стандарта HTTP, в которых упорядочение имеет значение, но оно вообще не должно быть.
Здесь ссылка, которая описывает заголовки HTTP:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2
Заголовки HTTP не зависят друг от друга, и вы можете использовать словарь для их хранения, не беспокоясь о своем заказе.
Это также может иметь значение при указании set-cookie
несколько раз для одного и того же файла cookie:
"Set-Cookie: COOKIE1=VALUE1; ...
"Set-Cookie: COOKIE1=VALUE2; ...
В этом случае COOKIE1
будет установлено в VALUE2
, и если порядок изменен:
"Set-Cookie: COOKIE1=VALUE2; ...
"Set-Cookie: COOKIE1=VALUE1; ...
COOKIE1
будет установлено значение VALUE1