Python - En-têtes HTTP

La demande et la réponse entre le client et le serveur impliquent l'en-tête et le corps du message. Les en-têtes contiennent des informations spécifiques au protocole qui apparaissent au début du message brut envoyé via la connexion TCP. Le corps du message est séparé des en-têtes par une ligne vide.

Exemple d'en-têtes

Les en-têtes de la réponse http peuvent être classés dans les types suivants. Vous trouverez ci-dessous une description de l'en-tête et un exemple.

Contrôle du cache

Le champ d'en-tête général Cache-Control est utilisé pour spécifier des directives qui DOIVENT être respectées par tout le système de mise en cache. La syntaxe est la suivante:

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

Un client ou serveur HTTP peut utiliser le Cache-controlen-tête général pour spécifier les paramètres du cache ou pour demander certains types de documents du cache. Les directives de mise en cache sont spécifiées dans une liste séparée par des virgules. Par exemple:

Cache-control: no-cache

Connexion

Le champ d'en-tête général de connexion permet à l'expéditeur de spécifier les options souhaitées pour cette connexion particulière et ne doivent pas être communiquées par des mandataires sur d'autres connexions. Voici la syntaxe simple pour utiliser l'en-tête de connexion:

Connection : "Connection"

HTTP / 1.1 définit l'option de connexion «fermer» pour l'expéditeur pour signaler que la connexion sera fermée après l'achèvement de la réponse. Par exemple:

Connection: close

Par défaut, HTTP 1.1 utilise des connexions persistantes, où la connexion ne se ferme pas automatiquement après une transaction. HTTP 1.0, en revanche, n'a pas de connexions persistantes par défaut. Si un client 1.0 souhaite utiliser des connexions persistantes, il utilise lekeep-alive paramètre comme suit:

Connection: keep-alive

Date

Tous les horodatages HTTP DOIVENT être représentés en heure moyenne de Greenwich (GMT), sans exception. Les applications HTTP sont autorisées à utiliser l'une des trois représentations suivantes des horodatages:

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

Encodage de transfert

Le champ d'en-tête général Transfer-Encoding indique quel type de transformation a été appliqué au corps du message afin de le transférer en toute sécurité entre l'expéditeur et le destinataire. Ce n'est pas la même chose que le codage de contenu car les codages de transfert sont une propriété du message, pas du corps de l'entité. La syntaxe du champ d'en-tête Transfer-Encoding est la suivante:

Transfer-Encoding: chunked

Toutes les valeurs de codage de transfert sont insensibles à la casse.

Améliorer

L'en -tête général Upgrade permet au client de spécifier les protocoles de communication supplémentaires qu'il prend en charge et qu'il aimerait utiliser si le serveur juge approprié de changer de protocole. Par exemple:

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

Le champ d'en-tête Upgrade est destiné à fournir un mécanisme simple pour la transition de HTTP / 1.1 à un autre protocole incompatible.

Via

L'en -tête général Via doit être utilisé par les passerelles et les mandataires pour indiquer les protocoles intermédiaires et les destinataires. Par exemple, un message de requête peut être envoyé d'un agent utilisateur HTTP / 1.0 à un proxy interne nommé "fred", qui utilise HTTP / 1.1 pour transmettre la requête à un proxy public sur nowhere.com, qui complète la requête en en le transmettant au serveur d'origine à l'adresse www.ics.uci.edu. La demande reçue par www.ics.uci.edu aurait alors le champ d'en-tête Via suivant:

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

Le champ d'en-tête Upgrade est destiné à fournir un mécanisme simple pour la transition de HTTP / 1.1 à un autre protocole incompatible.

Attention

L'en -tête général Warning est utilisé pour transporter des informations supplémentaires sur l'état ou la transformation d'un message qui peuvent ne pas être reflétées dans le message. Une réponse peut porter plus d'un en-tête d'avertissement.

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

Exemple

Dans l'exemple ci-dessous, nous utilisons le module urllib2 pour obtenir une réponse en utilisant urlopen. Ensuite, nous appliquons la méthode info () pour obtenir les informations d'en-tête pour cette réponse.

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

Lorsque nous exécutons le programme ci-dessus, nous obtenons la sortie suivante -

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