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

Запросы получения фрагментов

Информационные запросы HTTP, использующие условные или безусловные методы GET, могут заказывать один или более субфрагментов объекта, а не целый объект, применяя заголовок запроса Range:

Range = "Range" ":" rangesspecifier

Сервер может игнорировать заголовок Range. Однако исходные серверы HTTP/1.1 и промежуточные кэши должны поддерживать по возможности работу с фрагментами, так как Range поддерживает эффективное восстановление в случае частично неудачных пересылок больших объектов.

Если сервер поддерживает заголовки Range и специфицированный фрагмент или фрагменты подходят для данного объекта, то:

  • присутствие заголовка Range в безусловном GET допускает модификацию того, что прислано. Другими словами отклик может содержать статусный код 206 (Partial Content) вместо 200 (OK);

  • присутствие заголовка Range в условном GET (запрос использует If-Modified-Since, If-None-Match, If-Unmodified-Since и/или If-Match ) модифицирует то, что прислано GET в случае успешного завершения при выполнении условия ( TRUE ). Это не влияет на отклик 304 (Not Modified), если условие не выполнено ( FALSE ).

В некоторых случаях более удобно использовать заголовок If-Range. Если прокси, который поддерживает фрагменты, получает запрос Range, переадресует запрос внешнему серверу и получает в ответ весь объект, ему следует прислать запрашиваемый фрагмент клиенту. Он должен запомнить весь полученный отклик в своем кэше, если отклик совместим с политикой записи в его кэш.

Поле Referer

Поле заголовка запроса Referer позволяет клиенту специфицировать (для пользы сервера) адрес (URI) ресурса, из которого был получен Request-URI. Заголовок запроса Referer дает возможность серверу генерировать список обратных связей с ресурсами для интереса, ведения дневника, оптимизации кэширования и т.д.. Он позволяет также заставить работать устаревшие или дефектные связи. Поле Referer не должно посылаться, если Request-URI был получен от источника, который не имеет своего собственного URI, такого, например, как ввод с пользовательского терминала.

Referer = "Referer" ":" ( absoluteURI | relativeURI )

Пример:

Referer: http://www.w3.org/hypertext/DataSources/Overview.html

Если значением поля является частичный URI, его следует интерпретировать относительно Request-URI. URI не должен включать фрагментов.

Замечание. Так как первоисточник связи может быть конфиденциальной информацией или может раскрывать другой источник частной информации, настоятельно рекомендуется, чтобы пользователь имел возможность решать, посылать поле Referer или нет. Например, клиент-броузер может иметь кнопку-переключатель для открытого или анонимного просмотра, которая управляет активацией/дезактивацией посылки информации Referer и From.

Поле Retry-After

Поле заголовка отклика Retry-After может использоваться с кодом статуса 503 (Service Unavailable), чтобы указать, как долго еще данная услуга предполагается недоступной для запрашивающего клиента. Значением этого поля может быть либо дата http, либо целое число секунд (в десятичном исчислении) после отправки отклика.

Retry-After = "Retry-After" ":" ( HTTPdate | deltaseconds )

Два примера использования поля:

Retry-After: Fri, 31 Dec 1999 23:59:59 GMT Retry-After: 120

В последнем примере задержка равна двум минутам.