Как интерпретировать несколько заголовков Accept-*

Мое чтение RFC 2616 не ответило на мой вопрос:

Как сервер должен интерпретировать несколько заголовков Accept, Accept-Encoding, Accept-Language и т. Д.?

Конечно, это, как правило, должно быть редким явлением, но я не могу предположить, что каждый HTTP-клиент действительно делает то, что должен.

Представьте, что HTTP-запрос включает в себя следующее:

Accept-Language: en
Accept-Language: pt

Если сервер:

  1. Объединить результаты, чтобы эффективный Accept-Language: en, pt?
  2. Почитай только первый (en)?
  3. Почитай только последний (pt)?
  4. Бросить шипение (вернуть статус 400, возможно?)

Вариант № 1 кажется мне наиболее естественным, и, скорее всего, это то, что имеет в виду клиент, и наименее вероятно, что он полностью превзойдет ожидания, даже если это не то, что имеет в виду клиент.

Но существует ли какое-либо действительное правило (в идеале определенное в RFC) для того, как справляться с этими ситуациями?

1 ответ

Решение

1) Вы смотрите на устаревший RFC. RFC 2616 был отменен два года назад.

2) Тем не менее, ответ 1); см. https://greenbytes.de/tech/webdav/rfc7230.html: "Получатель МОЖЕТ объединить несколько полей заголовка с одним и тем же именем поля в одно"field-name: field-value"пара, не изменяя семантику сообщения, добавляя каждое последующее значение поля к объединенному значению поля по порядку, разделенному запятой. (...)"

Другие вопросы по тегам