Зачем использовать значения качества в заголовке HTTP Accept-Language? - PullRequest
16 голосов
/ 01 июля 2011

В HTTP заголовок запроса Accept-Language выглядит следующим образом:

Accept-Language: da, en-gb;q=0.8, en;q=0.7

Почему значения качества (q=...) включены в спецификацию HTTP? Разве нельзя отсортировать языки по качеству, выбрать произвольный порядок для языков с таким же качеством и исключить языки с q=0?

1 Ответ

9 голосов
/ 17 мая 2013

Интересный вопрос.

Обсуждение того, как появилась эта функция, вероятно, похоронено где-то в архивах списков рассылки, для которых я не смог найти действительную ссылку. Ваш пример не единственный проблемный. Для чего нужен сервер с "fr; q = 1.0, en; q = 1.0", если он поддерживает оба языка. Служите французскому, потому что он первый? А как насчет "fr, en; q = 1.0"?

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

По крайней мере (некоторые из) авторов спецификации согласны с тем, что эта функция далека от совершенства ( Основные различия между HTTP / 1.0 и HTTP / 1.1 - документ, представленный на восьмой Международной конференции World Wide Web ) :

" Поскольку механизм согласования контента допускает qvalues ​​и подстановочные знаки и выражает вариации во многих измерениях (язык, набор символов, тип контента и кодирование контента), автоматический выбор" наилучшего из доступных " «Вариант может быть сложным и может привести к неожиданным результатам. Эти варианты могут тонко взаимодействовать с кэшированием; см. обсуждение в разделе 3.4.

Согласование содержимого обещает стать плодотворной областью для развития дополнительных протоколов. Например, рабочая группа HTTP распознала полезность автоматического согласования относительно функций реализации клиента, таких как размер экрана, разрешение и глубина цвета. IETF создала рабочую группу по согласованию контента для продолжения работы в этой области."

Короче говоря, у меня нет реального ответа, но, надеюсь, участник процесса спецификаций расскажет о нем.

...