Как интерпретировать заголовки HTTP Accept? - PullRequest
3 голосов
/ 22 апреля 2009

Согласно спецификации HTTP1.1 , заголовок Accept следующего

Accept: text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c

интерпретируется как

text/html and text/x-c are the preferred media types, but if they do not 
exist, then send the text/x-dvi entity, and if that does not exist, send 
the text/plain entity

Давайте изменим заголовок на:

Accept: text/html, text/x-c

Что возвращается, если ничего из этого не принято? например давайте представим, что я поддерживаю только application / json

Ответы [ 3 ]

4 голосов
/ 22 апреля 2009

Возможно, вам следует ответить 406 Недопустимо . Вот как я читаю это .

Или 415 Неподдерживаемый тип носителя ?

Я бы выбрал 406, потому что в этом случае и в соответствии со спецификациями ответ ДОЛЖЕН включать список альтернатив. Хотя мне не ясно, как должен выглядеть этот список.

2 голосов
/ 22 апреля 2009

"Если присутствует поле заголовка Accept, и если сервер не может отправить ответ, который является приемлемым согласно комбинированному значению поля Accept, то сервер ДОЛЖЕН отправить 406 (не приемлемый) ответ." - RFC2616, раздел 14.1

1 голос
/ 23 апреля 2009

У вас есть выбор. Вы можете ответить 406 и включить «сущность» (например, HTML или текстовый файл), описывающую доступные форматы; ИЛИ, если вы используете HTTP 1.1, вы можете отправить поддерживаемый формат, даже если он не указан в заголовке Accept.

(см. Раздел 10.4.7 RFC 2616 )

"Примечание: серверы HTTP / 1.1 разрешены возвращать ответы, которые не являются приемлемо в соответствии с принятием Заголовки отправлены в запросе. В некоторых случаях, это может быть даже предпочтительнее, чем отправив 406 ответ. Агенты пользователей рекомендуется проверять заголовки входящего ответа для определения если это приемлемо. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...