Как wsgi обрабатывает несколько заголовков запросов с одним и тем же именем?
Вопрос
Заголовки WSGI представлены в среде как значения «HTTP_XXX».Например, значение Cookie:
заголовок хранится в HTTP_COOKIE
ключ к окружающей среде.
Как представляются несколько заголовков запроса с одним и тем же именем заголовка?
Решение
Несколько файлов cookie объединяются в один заголовок, разделенный точкой с запятой.
Несколько заголовков разрешены в спецификации HTTP , но только для определенных типов заголовков, и всегда допустимо объединять эти заголовки в один (хотя с использованием запятых, а не точек с запятой)
Другие советы
Я думал, что ответ на этот вопрос будет тривиальным, но, покопавшись немного, я не так уверен.
Вот что я нашел на данный момент:
WSGI PEP-333 (http://www.python.org/dev/peps/pep-0333/) предполагает, что переменные среды должны содержать все, что говорит спецификация CGI.
Спецификация CGI (все труднее найти, много неработающих ссылок, лучшее, что я смог найти на проект-coar-cgi-v11-03) рассказывает о метаданных и говорит (раздел 6.1.5)
".Если получено несколько полей заголовков с одинаковым полевым именем, то сервер должен переписать их так, как если бы они были получены в качестве единого поля заголовка, имеющего ту же семантику, прежде чем быть представленным в метаварите ».
Это подсказывает мне, что если у вас есть несколько строк заголовка с одним и тем же ключом, вы должны каким-то образом объединить их в одну строку.
HTTP_COOKIE, например, поддерживает это, объединяя все пары ключ=значение в одну строку с точками с запятой между ними.