2009-11-26 4 views
10

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

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

ответ

9

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

несколько заголовков разрешены the HTTP spec, но только для определенных видов заголовков, и всегда допустимо комбинировать эти заголовки в один (хотя с помощью запятых, а не с запятой)

3

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

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

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

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

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

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

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