
278 Часть IIL Web-протоколы
ca на другой вариант содержания. Если запрашиваемый формат отсутствует,
сервер может вернуть ответ 406 Not Acceptable. Код 406 Not Acceptable был вве-
ден для реализации управляемого агентом согласования. Сервер также включает
информацию о различных свойствах ресурса так, чтобы отправитель запроса мог
выбрать из числа доступных вариантов. Оборотной стороной ответа 406 Not
Acceptable является дополнительный запрос, который необходим, чтобы получить
приемлемый вариант из списка. Если сервер располагает всего одним вариантом,
тогда надо дать ему возможность вернуть содержание, проигнорировав заголовок
Accept. Спецификация считает, что предпочтительнее вернуть вариант, отличный
от тех, которые перечислены как приемлемые, чем ответ 406 Not Acceptable.
Агенту пользователя сложно передать исходному серверу алгоритм выбора в за-
просе, поэтому лучшим местом для алгоритма выбора является Web-сервер. Кон-
фигурационный файл сервера является подходящим местом для определения алго-
ритма выбора. Иначе говоря, сервер поддерживает алгоритм, который определяет
лучший вариант ответа. Однако управляемого сервером согласования бывает дос-
таточно не всегда. Уверенность, что агент пользователя располагает выбором поль-
зователя из перечня вариантов, приводит к тому, что сервер не будет способен вы-
полнить эту задачу автоматически.
Код ответа 300 Multiple Choices в НТТР/1.1 был расширен в основном в ре-
зультате введения согласования содержания. Этот код используется для указания,
что ресурс можно выбирать путем согласования из ряда возможных представле-
ний, расположенных в различных местах. Сервер-источник может указать предпоч-
тительное представление ресурса, но переадресация позволяет агенту пользовате-
ля сделать правильный выбор.
Одним из способов для агентов пользователя и исходных серверов определить
степень предпочтительности конкретного формата являются оценки качества, из-
вестные в HTTP как qvalue. Как отмечалось в разделе 7.4.3, qvalue — это число
в диапазоне от 0.0 до 1.0, где меньшее значение оценки качества указывает на мень-
шее предпочтение, а большее значение оценки качества указывает на большее пред-
почтение. Оценки качества были впервые предложены в первом проекте документа,
описывающего согласование содержания [BL93a], но формализованы были только
в НТТР/1.1 после того, как были реализованы компоненты с возможностью согласо-
вания. Вес конкретного параметра может теперь задаваться и в запросе, и в ответе.
Смысл нулевой оценки качества заключается в том, что содержание с этим конкрет-
ным значением параметра неприемлемо для клиента. К сожалению, термин оценка
качества был выбран до полного определения области его применения; на самом
деле оценки качества задают снижение качества относительно идеального уровня.
Оценка качества 1.0 является идеальной, а 0.9 на 10% хуже, чем искомый идеал.
Согласование содержания является гибким механизмом в том аспекте, что мож-
но задавать не только различные параметры, но и каждый параметр может иметь
различные варианты со своими уровнями приемлемости. Например, различные
оценки качества могут быть заданы для форматов кодирования:
Accept-Encoding: vdelta;q=1.0, gzip;q=0.5, compress;q=0.1
Этот пример показывает, что клиент отдает наибольшее предгючтение кодировке от-
вета vdelta. Если сервер не может предложить клиенту этот формат, тогда следует по-
пробовать предложить ресурс в формате gzip, а если и это не получается, то в формате
compress. В этом примере сервер может посылать ответ в одном из указагп1ых форма-
тов или в своем собственном формате. Если клиент вместо этого задал бы
Accept-Encoding: vdelta;q=l.О, gzip;q=0.5, compress;q=0.1, identity;q=0