RFC: 2068
Оригинал: Hypertext Transfer Protocol - HTTP/1.1
Другие версии: RFC 2616
Категория: Предложенный стандарт
Дата публикации:
Авторы: , , , ,
Перевод: Алексей Симонов

14. Определения полей заголовка

Этот раздел определяет синтаксис и семантику всего стандартного HTTP/1.1 поля заголовка. Для полей заголовка объекта и отправитель и получатель ссылаются или на клиента или на сервер, в зависимости от того, кто отправляет и кто получает объект.

14.1. Accept

Поле заголовка запроса Accept может использоваться, чтобы определить определенные типы информации, которые являются приемлемыми для ответа. заголовки Accept могут использоваться, чтобы указать, что запрос определенно ограничен маленьким набором заданных типов, как в случае запроса на встроенное изображение.

Accept         = "Accept" ":"
                 #( media-range [ accept-params ] )

media-range    = ( "*/*"
                 | ( type "/" "*" )
                 | ( type "/" subtype )
                 ) *( ";" parameter )

accept-params  = ";" "q" "=" qvalue *( accept-extension )

accept-extension = ";" token [ "=" ( token | quoted-string ) ]

Звездочка "*" символ используется к типам информации группы в диапазоны, с "*/*" индикация всех типов информации и "type / *" индикация всех подтипов того type. media-range МОЖЕТ включить мультимедийные параметры type, которые применимы к тому диапазону.

Каждый media-range МОЖЕТ сопровождаться одним или более accept-params, начиная с "q" parameter для того, чтобы указать относительный качественный коэффициент. Первый "q" parameter (если любой) отделяет media-range parameter от accept-params. Качественные коэффициенты позволяют пользователю или user agent указывать относительную степень предпочтения тому media-range, используя масштаб qvalue от 0 до 1 (раздел 3.9). Значение по умолчанию — q=1.

Обратите внимание: Использование "q" имени parameter, чтобы отделить мультимедийные параметры type от параметров расширения Accept происходит из-за исторической практики. Хотя это предотвращает любой мультимедийный type parameter, названный "q" от того, чтобы быть используемым с мультимедийным диапазоном, такому событию, как полагают, вряд ли дают нехватку любых "q" параметров в носителях IANA системный реестр type и редкое использование любых мультимедийных параметров type в Accept. Будущие типы информации должны быть отговорены регистрировать любой parameter, названный "q".

Пример

Accept: audio/*; q=0.2, audio/basic

ДОЛЖЕН быть интерпретирован как, "я предпочитаю audio/basic, но отправляю мне любой звуковой type, если он — лучшее доступное после 80%-ой скидки с цены по качеству." Если номер поля заголовка Accept присутствует, то предположено, что клиент принимает все типы информации. Если поле заголовка Accept присутствует, и если сервер не может отправить ответ, который является приемлемым согласно объединенному значению поля Accept, то сервер ДОЛЖЕН отправить 406 (not acceptable) ответ.

Более сложный пример

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

Устно, это было бы интерпретировано как "text/html, и text/x-c — предпочтительные типы информации, но если они не существуют, затем отправьте text/x-dvi объект, и если это не существует, отправьте объект text/plain."

Мультимедийные диапазоны могут быть отменены более специфичными мультимедийными диапазонами или специфичными типами информации. Если больше чем один мультимедийный диапазон применяется к данному type, у самой специфичной справочной информации есть старшинство. Например,

Accept: text/*, text/html, text/html;level=1, */*

имейте следующее старшинство:

  1. text/html; level=1
  2. text/html
  3. text/ *
  4. */*

Мультимедийный коэффициент качества type, связанный с данным type, определен, находя мультимедийный диапазон с самым высоким старшинством, которое соответствует тому type. Например,

Accept: text/*;q=0.3, text/html;q=0.7, text/html;level=1,
        text/html;level=2;q=0.4, */*;q=0.5

заставил бы следующие значения быть связанными:

text/html;level=1         = 1
text/html                 = 0.7
text/plain                = 0.3
image/jpeg                = 0.5
text/html;level=2         = 0.4
text/html;level=3         = 0.7

Обратите внимание: user agent можно предоставить с набором значения по умолчанию качественных значений для определенных мультимедийных диапазонов. Однако, если user agent не закрытая система, которая не может взаимодействовать с другими агентами предоставления, этот набор значения по умолчанию должен быть конфигурируемым пользователем.

2007 - 2017 © Русские переводы RFC, IETF, ISOC.