Учебники

Python — HTTP заголовки

Запрос и ответ между клиентом и сервером включают заголовок и тело сообщения. Заголовки содержат информацию о протоколе, которая появляется в начале необработанного сообщения, отправляемого по 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

Когда мы запускаем вышеуказанную программу, мы получаем следующий вывод: