Как wsgi обрабатывает несколько заголовков запросов с одним и тем же именем? - PullRequest
10 голосов
/ 26 ноября 2009

В заголовках WSGI в среде представлены значения HTTP_XXX. Например, значение Cookie: заголовок сохраняется в ключе HTTP_COOKIE окружения.

Как представлены несколько заголовков запросов с одним и тем же именем заголовка?

Ответы [ 2 ]

9 голосов
/ 26 ноября 2009

Несколько файлов cookie объединяются в один заголовок, разделенный точками с запятой.

Несколько заголовков допускаются спецификацией HTTP , но только для определенных типов заголовков, и всегда допустимо объединять эти заголовки в один (хотя с использованием запятых, а не точек с запятой)

3 голосов
/ 26 ноября 2009

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

Вот что я нашел до сих пор:

WSGI PEP-333 (http://www.python.org/dev/peps/pep-0333/) предполагает, что переменные среды должны содержать все, что сказано в спецификации CGI.

Спецификация CGI (становится все труднее найти, много неработающих ссылок, лучше всего я могу найти на draft-coar-cgi-v11-03 ) говорит о метаданных и говорит (раздел 6.1.5)

". Если несколько полей заголовка с то же поле-имя получено, то сервер ДОЛЖЕН переписать их как они были получены как единое целое поле заголовка с одинаковой семантикой прежде чем быть представленным в метапеременная "

Что подсказывает мне, что если у вас есть несколько строк заголовка с одним и тем же ключом, вы должны каким-то образом объединить их в одну строку.

HTTP_COOKIE, например, поддерживает это, объединяя все пары ключ = значение в одну строку с точкой с запятой между ними.

...