Старые и новые заголовки

Заголовки — это основное средство изменения режима запроса и предоставления метаданных о ресурсе. В следующих разделах мы рассмотрим заголовки: общие, запросов, ответов, содержимого и промежуточных передач.

ОБЩИЕ ЗАГОЛОВКИ

В НТТР/1.0 определены только два общих заголовка (Date и Pragma). В НТТР/1.1 имеются семь дополнительных общих заголовков. Общие заголовки могут, использоваться в запросах, в ответах и обычно относятся к более общим понятиям, чем заголовки запросов и ответов. В таблице 7.2 перечислены общие заголовки и связанные с ними основные понятия. Мы обсудим новые общие заголовки позже в этой главе.

Заголовки Date и Pragma, о которых шла речь в главе 6 (раздел 6.2.3), присутствовали и в НТТР/1.0. Список допустимых форматов даты и времени был изменен, из него были удалены рапее допустимые в RFC 1036 форматы даты. В RFC 1036 допускалось указание года в виде строки из двух цифр, что очевидно неприемлемо в свете проблемы двухтысячного года (для представления года требуются четыре, а не две цифры). Таким образом, хотя клиенты и серверы по-прежие- му могут принимать дапиые во всех трех форматах (RFC 822/1123, RFC 850/1036 и формат asctime(), припятый в ANSI С), генерировать они могут только строки дат в формате RFC 1123.

Таблица 7.2. Общие заголовки в НТТР/1.1.

С помощью ‘*’ помечены общие заголовки НТТР/1.0.

В семантику общего заголовка Pragma не внесено никаких изменений, к нему не добавлено никаких новых директив. Протоколом не выдвигается требований к использованию директивы Pragma. В НТТР/1.0 Pragma: no-cache определено только для сообщений-запросов, в НТТР/1.1 действие директивы не расширено на сообщения-ответы. НТТР/1.1 разрешает использование Pragma для обеспечения обратной совместимости и вводит более общий механизм управления кэшами посредством общего заголовка Cache-Control. Заголовок Cache-Control используется, чтобы передавать директивы в запросах и ответах, а также управлять поведением компонентов кэша.

ЗАГОЛОВКИ ЗАПРОСОВ

Как видно из таблицы 7.3, в НТТР/1.0 было 5 заголовков запросов, а в НТТР/1.1 их 19. Все 5 заголовков запросов из НТТР/1.0 (Authorization, From, If-Modified-Since, Referer и User-Agent) оставлены в НТТР/1.1, хотя семантика некоторых из них изменена. В частности, возможности аутентификации достуна, онисываемые заголовком Authorization, в НТТР/1.1 значительно расширены. Существует отдельный RFC, в котором описаны обычпая (Basic) аутентификация и аутентификация с помощью дайджестов [FHBH+99J. В НТТР/1.0 модификатор запроса If-Modi- fied-Since Можно было использовать только с методом GET, а в НТТР/1.1 его можно использовать с любым методом.

Мы подразделяем заголовки запросов на четыре класса, следующим образом:

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

•          Информация, передаваемая вместе с запросом. Заголовки, используемые для передачи в сообщении дополнительной информации, например, информации идентифицирующей пользователя и/или браузер.

•          Условные запросы. Заголовки, используемые для условных запросов, которые меияют интерпретацию сервером данного метода запроса.

•          Ограничения, накладываемые на сервер. Заголовки, используемые для получения определенной реакции сервера.

14 новых заголовков запросов в НТТР/1.1 обсуждаются в соответствующих разделах позже в данной главе.

Таблица 7.3. Заголовки запросов НТТР/1.1.

Числа в последнем столбце указывают номер раздела в дашюй пли п предыдущей главах. С помощью ‘*’ помечены заголовки запросов НТТР/1.0.

Класс

Заголовок

Краткое описание (Раздел)

Предпочтения в ответе

Accept

Accept-Charset Accept-Encoding

Accept-Language ТЕ

Предпочтительные типы содержания (7.9) Предпочтительные наборы символов (7.9) Предпочтительные схемы кодирования содержания (7.9)

Предпочтительные языки (7.9)

Предпочтительные схемы кодирования при передаче (7.4.3)

Информация, передаваемая вмсстс с запросом

Authorization* From* Referer* User-Agent*

Proxy-Authorization

Полномочия агента пользователя (6.2.3)

Адрес электронной почты пользователя (6.2.3)

URI, от которого получен URI запроса (6.2.3)

Информация о программном обеспечении агента пользователя (6.2.3)

Авторизация клиента проксп-сервером (7.11.3)

Условный запрос

If-Modified-Since*

If-Match

If-None-Match

If-Unmodified-Since

If-Range

Сравнение с временем последнего изменения (6.2.3)

Сравнение атрибутов содержимого (7.3.3)

Сравнение атрибутов содержимого (7.3.3)

Сравнение с временем последнего шмепення (7.4.1)

Отправить диапазон, только если содержимое не изменено (7.4.1)

Ограничения, накладываемые на ссрвср

Expect Host

Max-Forwards Range

Реакция сервера, ожидаемая клиентом (7.4.2)

Хост запрошенного ресурса (7.8)

Допустимое число переходов при передаче данных (7.7.1)

Запрос диапазона содержимого (7.4.1)

ЗАГОЛОВКИ ОТВЕТОВ

‘Заголовки ответов используются для предоставления дополнительной информации о сервере или о самом ответе. Заголовки ответов были изменены в НТТР/1.1 двумя способами: существующие в НТТР/1.0 заголовки ответов (Location, Server и WWW-Authenticate) были уточнены, кроме того, были добавлены шеегь новых заголовков ответов. Проведено различие между заголовком ответов Location и новым заголовком содержимого Content-Location.

Таблица 7.4. Заголовки ответов НТТР/1.1. С помощью ‘*’ помечены заголовки ответов НТТР/1.0.

ЗАГОЛОВКИ СОДЕРЖИМОГО

Полный список заголовков ответов в НТТР/1.1 приведеи в таблице 7.4.

Заголовки содержимого используются для предоставления дополнительной информации о ресурсе или о теле содержимого и имеют ту же семаитику, что и в НТТР/1.0. В дополнение к шести уже имевшимся в НТТР/1.0 заголовкам содержимого (Allow, Content-Encoding, Content-Length, Content-Type, Expires, Last- Modified) в НТТР/1.1 добавлены четыре новых заголовка. Хотя протокол не нужно менять для того, чтобы определить новые поля заголовка, получатели могут не воспринимать новые поля. Нераспознанные поля заголовка содержимого (как и полио- стыо перасиозпапиые заголовки) получателями игнорируются. Прокси-серверы могут их игнорировать, по, по-прежнему, обязаны передавать нераспознанные заголовки дальше. В таблице 7.5 приведен список заголовков содержимого в НТТР/1.1.

Таблица 7.5. Заголовки содержимого в НТТР/1.1. С помощью ‘*’ помечепы заголовки содержимого в НТТР/1.0.

ЗАГОЛОВКИ ПРОМЕЖУТОЧНЫХ ПЕРЕДАЧ

В НТТР/1.1 существует восемь заголовков промежуточных передач: Connection, Keep-Alive, Proxy-Authenticate, Proxy-Authorization, Trailers, TE, Transfer- Encoding и Upgrade. Остальные заголовки являются сквозными и не могут быть преобразованы в заголовки промежуточных передач простым включением их имеп в заголовок Connection в расчете на то, что при следующем соединении они будут изъяты. Новые заголовки могут быть введепы и преобразованы в заголовки промежуточных передач включением их в заголовок Connection. Например, если в сообщении определить новый заголовок Volume, то оп будет трактоваться как сквозпой и будет передаваться промежуточными серверами далее по цепочке, даже если они распознают этот заголовок. Однако если добавить заголовок,

Connection: Volume

то этот заголовок будет изъят, как только он достигнет следующего получателя.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100