Я читаю 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, подтверждающий мою мысль, что это неверно. Я уже нашел кое-что, в котором говорится, что «это действительно только для заголовков, которые можно разделить», но это не доказательство.
Несколько полей заголовка сообщения с одинаковым именем поля МОГУТ присутствовать в сообщении тогда и только тогда, когда все значение поля для этого поля заголовка определено как список, разделенный запятыми [т.е. # (значения)]. ДОЛЖНА быть возможна объединение нескольких полей заголовка в одну пару «имя-поля: значение поля» без изменения семантики сообщения путем добавления каждого последующего значения поля к первому, каждое из которых разделено запятой. Следовательно, порядок, в котором принимаются поля заголовка с одинаковым именем поля, важен для интерпретации значения комбинированного поля, и, таким образом, прокси-сервер НЕ ДОЛЖЕН изменять порядок значений этих полей при пересылке сообщения.
Это действительно не имеет смысла, но я ищу четкое доказательство.