Я читаю 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», без изменения семантики
сообщение, добавляя каждое последующее значение поля к первому, каждому
через запятую Порядок, в котором поля заголовка с одинаковыми
имя-поля получено, поэтому имеет значение для интерпретации
объединенного значения поля и, следовательно, прокси НЕ ДОЛЖЕН изменять
порядок значений этих полей при пересылке сообщения.
Это действительно не имеет смысла, но я ищу ясное доказательство.