Формат начальной строки (start-line) клиента и сервера различаются.
Заголовки бывают четырех видов:
• общие заголовки (general-headers), которые могут присутствовать
как в запросе, так и в ответе;
• заголовки запросов (request-headers), которые могут присутствовать
только в запросе;
• заголовки ответов (response-headers), которые могут присутствовать
только в ответе;
•
заголовки объекта (entity-headers), которые относятся к телу сооб-
щения и описывают его содержимое.
Каждый заголовок состоит из названия, символа двоеточия «:» и зна-
чения. Наиболее важные заголовки приведены в таблице 1.
Таблица 1. HTTP-заголовки
Заголовок
Connection
Date
Pragma
Transfer-Encoding
Accept
Acce -pt Charset
Accept-Encoding
Название
Общие заголовки
Указывает серверу на завершение (close) или про-
должение (keep-alive) сеанса
Дата и время формирования сообщения
Специальные, зависящие от реализации команды,
касающиеся передаваемого содержимого (напри-
мер, no-cache)
Способ кодирования сообщения при передаче (на-
пример, win1251, koi-8r)
Заголовки запроса
Типы содержимого, которое клиент способен раз-
работать и может воспроизвести
Кодировки символов, в которых клиент может при-
нимать текстовое содержимое
Способ, которым сервер может закодировать сооб-
Host
If-Modified-Since
If-Match
If-None-Match
If-Range
If-Unmodified-Since
Range
User-Agent
Age
Location
Retry-After
Server
Allow
щение
Хост и номер порта, с которого запрашивается до-
кумент
Заголовки запроса для условного обращения к ре-
сурсу
Запрос части документа
Название программного обеспечения клиента
Заголовки ответа
Число секунд, через которое нужно повторить за-
прос для получения нового содержимого
URI ресурса, к которому нужно обратиться для по-
лучения содержимого
Дата и время или число секунд, через которое нуж-
но повторить запрос, чтобы получить успешный от-
вет
Название программного обеспечения сервера, при-
славшего ответ
Заголовки объекта
Перечисляет поддерживаемые сервером методы
Content-Encoding
Способ,
которым закодировано тело сообщения,
Content-Length
Content-Type
ETag
Expires
Last-Modified
например, с целью уменьшения размера
Длина сообщения в байтах
Тип содержимого и, возможно, некоторые парамет-
ры
Уникальный тэг ресурса на сервере, позволяющий
сравнивать ресурсы
Дата и время, когда ресурс на сервере будет изме-
нен, и его нужно получать заново
Дата и время последней модификации содержимого
В теле сообщения содержится собственно передаваемая информация.
Тело сообщения представляет собой последовательность октетов (байтов).
Тело сообщения может быть закодировано, например, для уменьшения
объема передаваемой информации, при этом способ кодирования указыва-
ется в заголовке объекта Content-Encoding.
Запрос от клиента к серверу состоит из строки запроса (request-line),
заголовков (общих, запросов, объекта) и, возможно, тела сообщения.
Строка запроса:
<Команда HTTP> <Идентификатор запрашиваемого ресурса> <Вер-
сия HTTP>
Основныекомандыпротокола http
Основные команды протокола HTTP следующие:
OPTIONS – Запрос информации об опциях соединения (например, ме-
тодах, типах документов, кодировках), которые поддерживает сервер для
запрашиваемого ресурса. Если идентификатор запрашиваемого ресурса –
звездочка («*»), то запрос предназначен для обращения к серверу в целом.
GET – Позволяет получить информацию, связанную с запрашиваемым
ресурсом. Если идентификатор запрашиваемого ресурса указывает на до-
кумент, то сервер возвращает содержимое этого документа (содержимое
файла). Если запрашиваемый ресурс является приложением (программой),
формирующим в процессе своей работы некоторые данные, то в теле со-
общения ответа возвращаются эти данные. Если идентификатор запраши-
ваемого ресурса указывает на директорию (каталог, папку), то, в зависимо-
сти от настроек сервера, может быть возвращено либо содержимое дирек-
тории (список файлов), либо содержимое одного из файлов, находящегося
в этой директории (как правило, index.html). В случае запроса папки ее имя
может указываться как с символом «/» на конце, так и без него. При отсут-
ствии на конце идентификатора ресурса данного символа сервер выдает
один из ответов с перенаправлением (с кодами статуса 301 или 302). Раз-
новидностями команды GET является условный GET (conditional GET) и
частичный GET (partial GET). Условный GET запрашивает передачу объ-
екта, только если он удовлетворяет условиям, описанным в приведенных
заголовках. Частичный GET запрашивает передачу только части объекта.
HEAD – Идентична команде GET, за исключением того, что сервер не
возвращает в ответе тело сообщения.
POST – Используется для запроса, при котором адресуемый сервер
принимает данные, включенные в тело сообщения (объект) запроса, и от-
правляет их на обработку приложению, указанному как запрашиваемый
ресурс.
PUT – Тело сообщения, которое передается в запросе, сохраняется на
сервере, причем идентификатор запрашиваемого ресурса будет идентифи-
катором сохраненного документа.
DELETE – Запрос на удаление ресурса, имеющего запрашиваемый
идентификатор.
TRACE – Используется для тестирования или диагностики. Получа-
тель запроса (сервер Web) отправляет полученное сообщение обратно кли-
енту как тело сообщения ответа.
Ответсерверапо HTTP
После получения и интерпретации сообщения запроса, сервер отвеча-
ет сообщением HTTP ответа.
Первая строка ответа – это строка состояния (Status-Line):
<Версия HTTP> <Код состояния> <Поясняющая фраза>
Код состояния (Status-Code) – это целочисленный трехразрядный код
результата понимания и удовлетворения запроса. Поясняющая фраза
(Reason-Phrase) – короткое текстовое описание кода состояния. Код со-
стояния предназначен для обработки программным обеспечением, а пояс-
няющая фраза предназначена для пользователей.
Первая цифра кода состояния определяет класс ответа. Последние две
цифры не имеют определенной роли в классификации. Имеется 5 значений
первой цифры:
1xx: Информационные коды – запрос получен, продолжается обработ-
ка.
2xx: Успешные коды – действие было успешно получено, понято и
обработано.
3xx: Коды перенаправления – для выполнения запроса должны быть
предприняты дальнейшие действия.
4xx: Коды ошибок клиента – запрос имеет ошибку синтаксиса или не
может быть выполнен.
5xx: Коды ошибок сервера – сервер не в состоянии выполнить допус-
тимый запрос.
За строкой состояния следуют заголовки (общие, ответа и объекта) и,
возможно, тело сообщения.