Согласование содержания

редактировать

Согласование содержания относится к механизмам, определенным как часть HTTP, которые позволяют обслуживать разные версии документа (или, в более общем смысле, представления ресурса) с одним и тем же URI, так что пользовательские агенты могут указать, какая версия лучше всего соответствует их возможностям. Одним из классических способов использования этого механизма является обслуживание изображения в формате GIF или PNG, так что браузер, который не может отображать изображения PNG (например, MS Internet Explorer 4), будет обслуживать GIF. версия.

Ресурс может быть доступен в нескольких различных представлениях; например, он может быть доступен на разных языках или на разных типах носителей. Один из способов выбора наиболее подходящего варианта - предоставить пользователю индексную страницу и позволить ему выбрать наиболее подходящий вариант; однако часто можно автоматизировать выбор на основе некоторых критериев выбора.

Содержание
  • 1 Механизмы
    • 1.1 Управляемый сервером
    • 1.2 Управляемый агентом
  • 2 Ссылки
  • 3 Внешние ссылки
Механизмы

HTTP обеспечивает различное содержимое механизмы согласования, включая: управляемые сервером (или проактивные), управляемые агентом (или реактивные), прозрачные и / или гибридные их комбинации.

Управляемое сервером

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

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

Например, браузер может указать, что ему нужна информация на немецком языке, установив Accept-Languageследующим образом:

Accept-Language: de

Вместо этого браузер может скажите, что немецкий предпочтительнее, если возможно, но этот английский также приемлем, установив:

Accept-Language: de; q = 1.0, en; q = 0,5

Где коэффициент качества «q» для немецкого языка выше, чем для английского языка.

Несколько заголовков HTTP часто поставляются вместе для формата контента или, в частности, типа мультимедиа, языка и некоторых других аспектов ресурса. Помимо обычно используемого заголовка Acceptдля типа носителя, заголовок Accept-Languageдля согласования языка, RFC 7231 также описывает Accept-CharsetAccept-Encodingsдля кодирования символов и кодирования содержимого (сжатия) соответственно.

Пример более сложного запроса: браузер отправляет заголовки с указанием языка, указывающего, что немецкий язык является предпочтительным, но английский приемлем, как указано выше, и что, что касается форматов, HTML (text / html) предпочтительнее других типов текста (text / *), GIF (image / gif) или JPEG (image / jpg) изображения предпочтительнее других форматов изображений (image / *), но любой другой тип носителя (* / *) допускается в крайнем случае:

Принять-Язык: de; q = 1.0, en; q = 0,5 Принять: текст / html; q = 1.0, текст / *; q = 0,8, изображение / gif; q = 0,6, изображение / JPEG; q = 0,6, изображение / *; q = 0,5, * / *; q = 0,1

В дополнение к аспектам согласования контента, управляемого сервером, по типу контента и по языку, указанному в RFC 7231, существуют расширения, определяющие другие аспекты согласования контента, такие как Memento, который описывает использование заголовка Accept-Datetimeдля получения версии представления ресурса в определенные моменты времени, и согласование контента IETF / W3C по профилю, которое описывает использование Заголовок Accept-Profileдля получения представлений ресурсов, соответствующих профилям данных.

Ни RFC 7231, ни более поздние связанные спецификации, такие как Согласование содержимого по профилю, не указывают, как разрешать компромиссы в случаях, когда разные заголовки указывают конфликтующие требования, как, например, в приведенном выше примере, выбирая между HTML-страницей на английском языке и GIF-изображением на немецком языке.

Управляемое агентом

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

Подводя итог тому, как это работает, когда пользовательский агент отправляет запрос на сервер, сервер информирует пользовательского агента, какие представления он имеет, а также любые метаданные, которые он имеет о каждом представлении (например, контент- тип, качество, язык и т. д.). Затем пользовательский агент повторно отправляет запрос на определенный URL-адрес для выбранного представления. Это может быть автоматически выбран пользовательским агентом, или пользовательский агент может предоставить пользователю варианты выбора, и пользователь может выбрать их напрямую. Точнее, сервер отвечает либо 300 множественным выбором, либо 406 неприемлемо (когда предоставленные сервером критерии приемлемости предоставлены агентом пользователя, но сервер не может автоматически сделать выбор). К сожалению, HTTP оставляет неопределенным формат списка представлений и метаданных вместе с механизмами выбора.

.

Ссылки
Внешние ссылки

.

Эта статья частично основана на этой странице, которая защищена авторским правом Apache Foundation, но выпущена под бесплатной лицензией.
Последняя правка сделана 2021-05-15 10:51:33
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте