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

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

Как отображаются несколько заголовков запросов с тем же именем заголовка?

Ответ 1

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

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

Ответ 2

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

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

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

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

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

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

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