Я читаю через HTTP 1.1 RFC, и я не могу ответить на следующий вопрос.Могу ли я отделить все HTTP-заголовки запятой? Даже авторизация?
У нас есть заголовок:
Authorization: Basic Qmxvb21iZXJnOnRjbG1lU1JT, Basic
, которая вызывает проблемы, потому что Rails 3 парсер авторизации неправильно декодирует строку из-за «» характер. Это очень редко, я знаю, но мы добавим это, используя эту конфигурацию Apache HTTPD:
RequestHeader append Authorization "Basic" early
Apache mod_header documentation говорит:
Заголовок ответа приложен к любому существующему удару головой того же именем. Когда новое значение объединяется в существующий заголовок, он отделен от существующего заголовка запятой. Это стандартный HTTP-код , позволяющий присвоить заголовку несколько значений.
Но я не думаю, что это правильно для этого заголовка авторизации. Определение RFC этого не позволяет. Но некоторые заголовки разрешают список, разделенный запятыми. Я не уверен, что это общее правило для всех HTTP-заголовков.
Я ищет абзац в HTTP 1.1 RFC, который подтверждает мою идею, это неверно. Я уже нашел что-то, что говорит «это справедливо только для заголовков, которые могут быть разделены», но это не доказательство.
несколько полей заголовка с тем же имя поля может присутствовать в сообщении, если и только если все поле значение для этого поля заголовка определяется как разделенный запятыми список [то есть # (значения)]. Необходимо ДОБАВИТЬ , чтобы объединить несколько полей заголовка в одну пару «поле-имя: поле-значение» , не изменяя семантику сообщения , добавив каждое последующее значение поля в первое, каждый из , разделенных запятая. Поэтому порядок, в который получены поля заголовка с таким же именем поля , имеет важное значение для интерпретации комбинированного значения поля, и, таким образом, прокси НЕ ДОЛЖЕН изменять порядок этих значений полей при отправке сообщения.
Это действительно не имеет смысла, но я ищу четкое доказательство.
Ну, я ничего не смог найти. Похоже, это после 7 часов сна :-) – lzap