Python: encabezados HTTP

La solicitud y la respuesta entre el cliente y el servidor implican el encabezado y el cuerpo del mensaje. Los encabezados contienen información específica del protocolo que aparece al principio del mensaje sin procesar que se envía a través de una conexión TCP. El cuerpo del mensaje se separa de los encabezados mediante una línea en blanco.

Ejemplo de encabezados

Los encabezados de la respuesta http se pueden clasificar en los siguientes tipos. A continuación se muestra una descripción del encabezado y un ejemplo.

Control de caché

El campo de encabezado general de Cache-Control se utiliza para especificar directivas que DEBEN ser obedecidas por todo el sistema de almacenamiento en caché. La sintaxis es la siguiente:

Cache-Control : cache-request-directive|cache-response-directive

Un cliente o servidor HTTP puede utilizar el Cache-controlencabezado general para especificar parámetros para el caché o para solicitar ciertos tipos de documentos del caché. Las directivas de almacenamiento en caché se especifican en una lista separada por comas. Por ejemplo:

Cache-control: no-cache

Conexión

El campo de encabezado general de la conexión permite al remitente especificar las opciones deseadas para esa conexión en particular y no deben ser comunicadas por servidores proxy a través de conexiones adicionales. A continuación se muestra la sintaxis simple para usar el encabezado de conexión:

Connection : "Connection"

HTTP / 1.1 define la opción de conexión "cerrar" para que el remitente indique que la conexión se cerrará una vez completada la respuesta. Por ejemplo:

Connection: close

De forma predeterminada, HTTP 1.1 utiliza conexiones persistentes, donde la conexión no se cierra automáticamente después de una transacción. HTTP 1.0, por otro lado, no tiene conexiones persistentes por defecto. Si un cliente 1.0 desea usar conexiones persistentes, usa elkeep-alive parámetro de la siguiente manera:

Connection: keep-alive

Fecha

Todas las marcas de fecha / hora HTTP DEBEN estar representadas en la hora media de Greenwich (GMT), sin excepción. Las aplicaciones HTTP pueden utilizar cualquiera de las siguientes tres representaciones de marcas de fecha / hora:

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

Codificación de transferencia

El campo de encabezado general Transfer-Encoding indica qué tipo de transformación se ha aplicado al cuerpo del mensaje para transferirlo de forma segura entre el remitente y el destinatario. Esto no es lo mismo que la codificación de contenido porque las codificaciones de transferencia son una propiedad del mensaje, no del cuerpo de la entidad. La sintaxis del campo de encabezado Transfer-Encoding es la siguiente:

Transfer-Encoding: chunked

Todos los valores de codificación de transferencia no distinguen entre mayúsculas y minúsculas.

Potenciar

El encabezado general Actualizar permite al cliente especificar qué protocolos de comunicación adicionales admite y le gustaría usar si el servidor lo considera apropiado para cambiar de protocolo. Por ejemplo:

Upgrade: HTTP/2.0, SHTTP/1.3, IRC/6.9, RTA/x11

El campo de encabezado de actualización está destinado a proporcionar un mecanismo simple para la transición de HTTP / 1.1 a algún otro protocolo incompatible.

Vía

Las puertas de enlace y los proxies deben utilizar el encabezado general Via para indicar los protocolos y destinatarios intermedios. Por ejemplo, se podría enviar un mensaje de solicitud desde un agente de usuario HTTP / 1.0 a un proxy interno llamado en código "fred", que usa HTTP / 1.1 para reenviar la solicitud a un proxy público en nowhere.com, que completa la solicitud mediante reenviarlo al servidor de origen en www.ics.uci.edu. La solicitud recibida por www.ics.uci.edu tendría entonces el siguiente campo de encabezado Via:

Via: 1.0 fred, 1.1 nowhere.com (Apache/1.1)

El campo de encabezado de actualización está destinado a proporcionar un mecanismo simple para la transición de HTTP / 1.1 a algún otro protocolo incompatible.

Advertencia

El encabezado general de Advertencia se utiliza para llevar información adicional sobre el estado o la transformación de un mensaje que podría no reflejarse en el mensaje. Una respuesta puede llevar más de un encabezado de Advertencia.

Warning : warn-code SP warn-agent SP warn-text SP warn-date

Ejemplo

En el siguiente ejemplo usamos el módulo urllib2 para obtener una respuesta usando urlopen. A continuación, aplicamos el método info () para obtener la información del encabezado de esa respuesta.

import urllib2
response = urllib2.urlopen('http://www.tutorialspoint.com/python')
html = response.info()
print html

Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:

Access-Control-Allow-Headers: X-Requested-With
Access-Control-Allow-Origin: *
Cache-Control: max-age=2592000
Content-Type: text/html; charset=UTF-8
Date: Mon, 02 Jul 2018 11:06:07 GMT
Expires: Wed, 01 Aug 2018 11:06:07 GMT
Last-Modified: Sun, 01 Jul 2018 21:05:38 GMT
Server: ECS (tir/CDD1)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 22063
Connection: close