Запрос и ответ между клиентом и сервером включают заголовок и тело сообщения. Заголовки содержат информацию о протоколе, которая появляется в начале необработанного сообщения, отправляемого по TCP-соединению. Тело сообщения отделено от заголовков пустой строкой.
Пример заголовков
Заголовки в http-ответе могут быть разделены на следующие типы. Ниже приведено описание заголовка и пример.
Cache-Control
Поле общего заголовка Cache-Control используется для указания директив, которым ДОЛЖНА подчиняться вся система кэширования. Синтаксис выглядит следующим образом:
Cache-Control : cache-request-directive|cache-response-directive
HTTP-клиент или сервер могут использовать общий заголовок Cache-control, чтобы указать параметры для кэша или запросить определенные виды документов из кэша. Директивы кэширования указываются в списке через запятую. Например:
Cache-control: no-cache
соединение
Поле общего заголовка соединения позволяет отправителю указывать параметры, которые требуются для этого конкретного соединения и не должны передаваться прокси-серверами по дальнейшим соединениям. Ниже приведен простой синтаксис использования заголовка соединения:
Connection : "Connection"
HTTP / 1.1 определяет опцию «закрыть» соединение для отправителя, чтобы сигнализировать, что соединение будет закрыто после завершения ответа. Например:
Connection: close
По умолчанию HTTP 1.1 использует постоянные соединения, где соединение не закрывается автоматически после транзакции. HTTP 1.0, с другой стороны, не имеет постоянных соединений по умолчанию. Если клиент 1.0 хочет использовать постоянные соединения, он использует параметр keep-alive следующим образом:
Connection: keep-alive
Дата
Все HTTP-метки даты / времени ДОЛЖНЫ быть представлены в среднем времени по Гринвичу (GMT) без исключения. Приложениям HTTP разрешается использовать любое из следующих трех представлений меток даты / времени:
Sun, 06 Nov 1994 08:49:37 GMT ; RFC 822, updated by RFC 1123 Sunday, 06-Nov-94 08:49:37 GMT ; RFC 850, obsoleted by RFC 1036 Sun Nov 6 08:49:37 1994 ; ANSI C's asctime() format
Transfer-Encoding
Поле общего заголовка Transfer-Encoding указывает, какой тип преобразования был применен к телу сообщения для безопасной передачи его между отправителем и получателем. Это не то же самое, что кодирование контента, потому что кодировки передачи являются свойством сообщения, а не тела объекта. Синтаксис поля заголовка Transfer-Encoding выглядит следующим образом:
Transfer-Encoding: chunked
Все значения кодирования передачи нечувствительны к регистру.
Обновить
Общий заголовок Upgrade позволяет клиенту указать, какие дополнительные коммуникационные протоколы он поддерживает и хотел бы использовать, если сервер посчитает целесообразным переключать протоколы. Например:
Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11
Поле заголовка Upgrade предназначено для обеспечения простого механизма перехода от HTTP / 1.1 к другому несовместимому протоколу.
С помощью
Общий заголовок Via должен использоваться шлюзами и прокси-серверами для указания промежуточных протоколов и получателей. Например, сообщение с запросом может быть отправлено от пользовательского агента HTTP / 1.0 внутреннему прокси-серверу с кодовым названием «fred», который использует HTTP / 1.1 для пересылки запроса общедоступному прокси-серверу по адресу nowhere.com, который завершает запрос переадресация на исходный сервер по адресу www.ics.uci.edu. Запрос, полученный www.ics.uci.edu, будет иметь следующее поле заголовка Via:
Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)
Поле заголовка Upgrade предназначено для обеспечения простого механизма перехода от HTTP / 1.1 к другому несовместимому протоколу.
Предупреждение
Общий заголовок Warning используется для переноса дополнительной информации о состоянии или преобразовании сообщения, которая может не отражаться в сообщении. Ответ может содержать более одного заголовка предупреждения.
Warning : warn-code SP warn-agent SP warn-text SP warn-date
пример
В приведенном ниже примере мы используем модуль urllib2, чтобы получить ответ с помощью urlopen. Затем мы применяем метод info (), чтобы получить информацию заголовка для этого ответа.
import urllib2 response = urllib2.urlopen('http://www.tutorialspoint.com/python') html = response.info() print html
Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод: