Могу ли я отделить ВСЕ HTTP-заголовки запятой?Даже авторизация? - PullRequest
1 голос
/ 25 января 2012

Я читаю RFC HTTP 1.1 и не могу ответить на следующий вопрос.

У нас есть этот заголовок:

Authorization: Basic Qmxvb21iZXJnOnRjbG1lU1JT, Basic

, что вызывает проблемы, потому что анализатор авторизации Rails 3 неправильно декодирует строку из-за символа ",". Это очень редко, я знаю, но мы добавляем это, используя эту конфигурацию Apache httpd:

RequestHeader append Authorization "Basic" early

Документация Apache mod_header говорит:

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

Но я не думаю, что это правильно для этого заголовка авторизации. Определение RFC не позволяет этого. Но некоторые заголовки допускают разделенный запятыми список. Я не уверен, является ли это общим правилом для всех заголовков HTTP.

Я ищу параграф в HTTP 1.1 RFC , который подтверждает мою идею, что это неверно. Я уже нашел что-то, что говорит «это действительно только для заголовков, которые могут быть разделены», но это не доказательство.

МОЖЕТ присутствовать несколько полей заголовка сообщения с одинаковым именем поля в сообщении, если и только если все значение поля для этого заголовка поле определяется как список, разделенный запятыми [т.е., # (значения)]. Это должно можно объединить несколько полей заголовка в одно пара «field-name: field-value», без изменения семантики сообщение, добавляя каждое последующее значение поля к первому, каждому через запятую Порядок, в котором поля заголовка с одинаковыми имя-поля получено, поэтому имеет значение для интерпретации объединенного значения поля и, следовательно, прокси НЕ ДОЛЖЕН изменять порядок значений этих полей при пересылке сообщения.

Это действительно не имеет смысла, но я ищу ясное доказательство.

1 Ответ

2 голосов
/ 25 января 2012

Ответ в цитируемом вами тексте:

"Множество полей заголовка сообщения с одним и тем же именем поля МОЖЕТ присутствовать в сообщении тогда и только тогда, когда все значение поля для этого поля заголовка определено как список, разделенный запятыми [т.е. # (значения)] . "

Это не относится к «Авторизации».

...