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

Поле Proxy-Authenticate

Поле заголовка отклика Proxy-Authenticate должно быть включено в качестве части отклика 407 (Proxy Authentication Required). Значение поля состоит из вызова, который указывает схему идентификации, и параметров, применимых в прокси для данного Request-URI.

Proxy-Authenticate = "Proxy-Authenticate" ":" challenge

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

Поле Proxy-Authorization

Поле заголовка запроса Proxy-Authorization позволяет клиенту идентифицировать себя (или его пользователя) прокси, который требует авторизации. Значение поля Proxy-Authorization состоит из автризационных параметров, содержащих идентификационную информацию агента пользователя для прокси и/или области (realm) запрошенного ресурса.

Proxy-Authorization = "Proxy-Authorization" ":" credentials

В отличие от Authorization, поле заголовка Proxy-Authorization применимо только к следующему внешнему прокси, который требует авторизации с помощью поля Proxy-Authenticate. Когда работает несколько прокси, объединенных в цепочку, поле заголовка Proxy-Authorization используется первым внешним прокси, который предполагает получение авторизационных параметров. Прокси может передать эти параметры из запроса клиента следующему прокси, если существует механизм совместной авторизации при обслуживании данного запроса.

Поле Public

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

Public = "Public" ":" 1#method

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

Public: OPTIONS, MGET, MHEAD, GET, HEAD

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

Фрагмент. Фрагменты байт

Так как все объекты HTTP в процессе передачи представляют собой последовательности байт, концепция фрагментов является существенной для любого объекта HTTP. Однако не все клиенты и серверы нуждаются в поддержке операций с фрагментами.

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

Операция с байтовыми фрагментами может относиться к одному набору байт или к нескольким таким наборам в пределах одного объекта.

rangesspecifier = byterangesspecifier byterangesspecifier = bytesunit "=" byterangeset byterangeset = 1#( byterangespec | suffixbyterangespec ) byterangespec = firstbytepos "" [lastbytepos] firstbytepos = 1*DIGIT lastbytepos = 1*DIGIT

Значение firstbytepos в спецификации byterangespec указывает на относительное положение первого байта фрагмента. Значение lastbytepos определяет относительное положение последнего байта фрагмента. Относительное положение начального байта равно нулю.

Если присутствует значение lastbytepos, оно должно быть больше или равно значению firstbytepos в спецификации byterangespec, в противном случае спецификация byterangespec не корректна. Получатель некорректной спецификации byterangespec должен ее игнорировать.

Если значение lastbytepos отсутствует или если значение больше или равно текущей длине тела объекта, значение lastbytepos берется на единицу меньше текущего значения длины тела объекта в байтах.

При выборе lastbytepos клиент может ограничить число копируемых байт, если не известна длина объекта.

suffixbyterangespec = "" suffixlength suffixlength = 1*DIGIT

Спецификация suffixbyterangespec применяется для задания суффикса тела объекта с длиной, заданной значением suffixlength. То есть, эта форма специфицирует последние N байтов тела объекта. Если объект короче заданной длины суффикса, то в качестве суффикса используется все тело объекта.

Примеры значений byterangesspecifier (предполагается, что длина тела объекта равна 10000):

  • Первые 500 байтов (относительные позиции 0-499, включительно): bytes=0-499

  • Вторые 500 байтов (относительные позиции 500-999, включительно): bytes=50-0999

  • Последние 500 байтов (относительные позиции 9500-9999, включительно): bytes=500 или bytes=9500

  • Первые и последние байты (байты 0 и 9999): bytes=0-0,1

  • Несколько легальных, но неканонических спецификаций вторых 500 байт (относительные позиции 500999, включительно): bytes=500-600,601-999; bytes=500-700,601-999