Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сетевые протоколы в инфокоммуникациях (ПЗ).docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
3.51 Mб
Скачать

Списки предыстории

Агенты пользователя часто имеют механизмы "исторического" управления, такие, как кнопки Back и списки предыстории, которые могут использоваться для повторного отображения объекта, извлеченного ранее в процессе сессии. Механизмы предыстории и кэширования различны. В частности, механизмы предыстории не должны пытаться показать семантически прозрачный вид текущего состояния ресурса. Скорее, механизм предыстории предназначен для того, чтобы в точности показать, что видел пользователь, когда ресурс был извлечен. По умолчанию время годности не приложимо к механизмам предыстории. Если объект все еще в памяти, механизм предыстории должен его отобразить, даже если время жизни объекта истекло и он объявлен непригодным, — если только пользователь не сконфигурировал агента так, чтобы обновлять объекты, срок годности которых истек. Это не запрещает механизму предыстории сообщать пользователю, что рассматриваемый им объект устарел.

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

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

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

Поле Accept

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

Accept = "Accept" ":" #( mediarange [ acceptparams ] ) mediarange = ( "*/*" | ( type "/" "*") | ( type "/" subtype ) ) *( ";" parameter ) acceptparams = ";" "q" "=" qvalue *( acceptextension ) acceptextension = ";" token [ "=" ( token | quotedstring ) ]

Символ звездочка "*" используется для того, чтобы группировать типы среды с "*/*", указывающим на все типы, и "type/*", указывающим на все субтипы данного типа. Группа сред может включать в себя параметры типа среды, которые применимы. За каждой группой сред может следовать один или более параметров (acceptparams), начинающихся с "q"параметра для указания фактора относительного качества. Первый "q" параметр (если таковой имеется) отделяет параметры группы сред от параметров приема. Факторы качества позволяют пользователю или агенту пользователя указать относительную степень предпочтения для данной группы сред, используя шкалу значений q от 0 до 1. Значение по умолчанию соответствует q=1.

Замечание. Использование имени параметра "q" для отделения параметров типа среды от параметров расширения Acceptсвязано с исторической практикой. Это мешает присвоению параметру типа среды имени "q".

Пример

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

должен интерпретироваться, как "Я предпочитаю audio/basic, но шлите мне любые типы аудио, если это лучшее, что имеется после 80% понижения качества". Если поле заголовка Accept отсутствует, тогда предполагается, что клиент воспринимает все типы среды. Если поле заголовка Accept присутствует и если сервер не может послать отклик, который является приемлемым, согласно комбинированному значению поля Accept, тогда сервер должен послать отклик 406 (not acceptable). Более сложный пример:

Accept: text/plain; q=0.5, text/html, text/xdvi; q=0.8, text/xc

Это будет интерпретироваться следующим образом: text/html и text/xc являются предпочтительными типами сред, но, если их нет, тогда следует слать объект text/xdvi; если он отсутствует, следует присылать объект типа text/plain.

Группы сред могут быть заменены другими группами или некоторыми специальными типами среды. Если используется более одного типа среды, предпочтение отдается наиболее специфичному типу. Например:

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

имеет следующие предпочтения:

  1. text/html;level=1

  2. text/html

  3. text/*

  4. /

Фактор качества типа среды, ассоциированный с данным типом, определен путем нахождения группы сред с наивысшим предпочтением, который подходит для данного типа. Например,

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

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