Заголовки протокола HTTP

Заголовок HTTP (HTTP Header) — это строка в HTTP-сообщении, содержащая разделённую двоеточием пару вида «параметр-значение». Формат заголовка соответствует общему формату заголовков текстовых сетевых сообщений ARPA (RFC 822). Как правило, браузер и веб-сервер включают в сообщения более чем по одному заголовку. Заголовки должны отправляться раньше тела сообщения и отделяться от него хотя бы одной пустой строкой (CRLF).

Название параметра должно состоять минимум из одного печатного символа (ASCII-коды от 33 до 126). После названия сразу должен следовать символ двоеточия. Значение может содержать любые символы ASCII, кроме перевода строки (CR, код 10) и возврата каретки (LF, код 13).

Пробельные символы в начале и конце значения обрезаются. Последовательность нескольких пробельных символов внутри значения может восприниматься как один пробел. Регистр символов в названии и значении не имеет значения (если иное не предусмотрено форматом поля).

Пример заголовков ответа сервера:

Server: Apache/2.2.3 (CentOS)

Last-Modified: Wed, 09 Feb 2011 17:13:15 GMT

Content-Type: text/html; charset=UTF-8

Accept-Ranges: bytes

Date: Thu, 03 Mar 2011 04:04:36 GMT

Content-Length: 2945

Age: 51

X-Cache: HIT from proxy.omgtu

Via: 1.0 proxy.omgtu (squid/3.1.8)

Connection: keep-alive

200 OK

Тело протокола HTTP

Тело HTTP сообщения (message-body), если оно присутствует, используется для передачи сущности, связанной с запросом или ответом. Тело сообщения (message-body) отличается от тела сущности(entity-body) только в том случае, когда при передаче применяется кодирование, указанное в заголовке Transfer-Encoding. В остальных случаях тело сообщения идентично телу сущности.

Заголовок Transfer-Encoding должен отправляться для указания любого кодирования передачи, примененного приложением в целях гарантирования безопасной и правильной передачи сообщения. Transfer-Encoding - это свойство сообщения, а не сущности, и оно может быть добавлено или удалено любым приложением в цепочке запросов/ответов.

Присутствие тела сообщения в запросе отмечается добавлением к заголовкам запроса поля заголовка Content-Length или Transfer-Encoding. Тело сообщения (message-body) может быть добавлено в запрос только когда метод запроса допускает тело объекта (entity-body).

Все ответы содержат тело сообщения, возможно нулевой длины, кроме ответов на запрос методом HEAD и ответов с кодами статуса 1xx (Информационные), 204 (Нет содержимого, No Content), и 304 (Не модифицирован, Not Modified).

Таблица кодов возврата HTTP

Код возврата Описание кода возврата HTTP
  Продолжить (Continue)
  Переключение протоколов (switching protocols)
  OK
  Создан (created)
  Принят
  Неавторитеная информация (non-authoritative information)
  Файл пуст (no content)
  Сброс содержимого (reset content)
  Частичное содержимое (partial content)
  Многократный выбор (multiple choices)
  Перемещен постоянно (moved permanently)
  Перемещен временно (moved temporarily)
  Смотри другой (see other)
  Неизмененный (not modified)
  Использовать прокси-сервер (use proxy)
  Неправильный запрос (bad request)
  Неавторизирован (unauthorized)
  Payment Required
  Нет доступа (forbidden)
  Не найден
  Метод не разрешен (method not allowed)
  Неприемлемый (not acceptable)
  Требуется аутентификация на прокси-сервере (proxy authentication required)
  Превышение тайм-аута запроса (request time-out)
  Тредуется длина (при использовании метода POST)
  Не выполнено предыдущее условие (precondition failed)
  Объект запроса слишком велик (request entity too large)
  Запрашиваемый URL слишком велик (request URL too large)
  Неподдерживаемый тип информации (unsupported media type)
  Ошибка сервера (server error)
  Не реализован (not implemented)
  Неправильный шлюз (Bad Gateway)
  Нехватка ресурсов (out of resources)
  Превышен тайм-аут шлюза
  Неподдерживаемая весрия HTTP (HTTP version not supported)

Чтобы на практике увидеть какие HTTP запроси передает и получает сервер, можно воспользоваться Инструментами разработчика браузера Google Chrome, для этого необходимо выбрать в «Инструменты» - «Инструменты разработчика». Перейти в открывшемся снизу окне во вкладку «Network». Обновить открытую страницу. В списке слева будут отображены посылаемые браузером HTTP-запросы. Вопрос на получение страницы будет самым первым в списке. Детальную информацию о нем можно получить выбрав его.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: