HTTP header : une vue d’ensemble pour les utilisateurs

Lorsque vous visitez un site Web, votre navigateur envoie une demande au serveur Web pour obtenir des données ou des informations, par exemple un fichier HTML (c’est-à-dire une page Web). Tant dans la requête - la requête HTTP – que dans la réponse du serveur, certaines méta-informations sont échangées en plus des données réelles. Ceci est résumé dans l’en-tête HTTP. Nous expliquons la fonction de l’HTTP header et ses principaux champs.

Fonction de l’en-tête expliquée à l’aide d’un exemple

Lorsque le site Web www.exemple.com est consulté, le serveur Web renvoie non seulement le site lui-même, mais aussi l’en-tête suivant (invisible pour les utilisateurs) :

Les lignes individuelles sont appelées « champs d’en-tête ». Chacun (sauf le premier) est constitué d’une paire nom/valeur séparée par deux points.

Explications pour les différentes lignes :

  • HTTP/1.1 est la version valide du protocole HTTP.
  • 200 OK est le code de statut. Il indique que le serveur a reçu, compris et accepté la demande.
  • Content-Encoding et Content-Type fournissent des informations sur le type de fichier.
  • Age, Cache-Control, Expires, Vary et X-Cache font référence à la mise en cache du fichier.
  • Etag et Last-Modified sont utilisés pour le contrôle de la version du fichier livré.
  • Le terme « server » désigne le logiciel du serveur Web.
  • Content-Length est la taille du fichier en octets.

Comme on peut facilement le constater, cette information d’en-tête est principalement utilisée pour la coordination entre le client (navigateur) et le serveur : elle garantit que le client peut comprendre la forme du fichier, que le fichier est suffisamment à jour et que la taille du fichier répond aux attentes du navigateur.

Les lignes d’en-tête indiquées dans l’exemple ne représentent qu’une petite partie des champs d’en-tête disponibles. Au total, il existe près de 100 champs d’en-tête HTTP, dont environ 30 servent à spécifier des requêtes HTTP, environ 30 à la réponse du serveur, et toute une série d’autres champs d’en-tête qui servent à différentes fins et ne sont pas (encore) partiellement normalisés.

Le tableau suivant explique les principaux champs d’en-tête.

Aperçu des principaux champs d’HTTP header

Request header (demande du client)

Champ d’en-tête Signification Exemple
Accept Les types de contenu que le client peut traiter ; si le champ est vide, il s’agit de tous les types de contenu. Accept: text/html, application/xml
Accept-Charset Quels jeux de caractères le client peut afficher. Accept-Charset: utf-8
Accept-Encoding Les formats compressés pris en charge par le client. Accept-Encoding: gzip
Accept-Language Version linguistique souhaitée Accept-Language: fr-FR
Authorization Données d’authentification (par exemple pour un login) Basic WjbU7D25zTAlV2tZ7==
Cache-Control Options du mécanisme de mise en cache Cache-Control: no-cache
Cookie Cookie stocké pour ce serveur Cookie: $Version=1; Content=23
Content-Length Longueur de l’organisme demandeur Content-Length: 212
Content-Type Type MIME ; pertinent pour les requêtes POST et PUT Content-Type: application/x_222-form-urlencoded
Date Date et heure de la demande Date: Mon, 9 March 2020 09:02:22 GMT
Expect Formule une attente au serveur, généralement la réception d’une demande importante. Expect: 100-continue (le serveur doit envoyer le code 100 lorsqu’il est prêt à recevoir la requête)
Host Nom de domaine du serveur Host: exemple.fr
If-Match Exécution conditionnelle d’une action, en fonction de la concordance d’un code transmis If-Match: „ft678iujhnjio90’pöl“
If-Modified-Since Envoyer uniquement si le contenu demandé a été modifié depuis le moment spécifié IF-Modified-Since: Mon 2 Mar 2020 1:00:00 GMT
If-None-Match Comme ci-dessus, mais spécifié via un ETag (Entity-Tag = tag d’entité, voir ci-dessous) If-None-Match: „cxdrt5678iujhgbvb“
If-Range Ne demande que la partie du contenu qui a été modifiée ou qui manque dans le cache du client If-Range: Mon 2 Mar 2020 1:00:00 GMT
If-Unmodified-Since Analogue à IF-Modified-Since If-Modified-Since: Mon 2 Mar 2020 1:00:00 GMT
Max-Forwards Définit le nombre maximum de fois que la réponse du serveur peut être transmise Max-Forwards: 12
Proxy-Authorization Utilisé pour authentifier le client auprès d’un serveur proxy Proxy-Authorization: Basic WjbU7D25zTAlV2tZ7==
Range Précise une partie du contenu demandé Range: bytes=0-9999
Referrer URL de la ressource à partir de laquelle la demande est faite (c’est-à-dire à partir de laquelle le lien a été créé) Referrer: https://exemple.fr/index.html
TE Codage de transfert d’extension accepté TE: gzip, deflate
User-Agent User-Agent du client (simplement dit : le navigateur) Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36

Response header (réponse du serveur)

Champ d’en-tête Signification Exemple
Accept-Ranges Unités que le serveur accepte pour les spécifications de la plage (voir ci-dessus) Accept-Ranges: bytes
Age Nombre de secondes pendant lesquelles l’objet a été dans la mémoire cache Age: 2300
Allow Types de demandes autorisées pour une ressource spécifique Allow: GET, POST, HEAD
Cache-Control Si l’objet peut être conservé dans le cache et pendant combien de temps Cache-Control: max-age=4800
Connection Type de connexion préféré Connection: close
Content-Encoding Type de compression Content-Encoding: deflate
Content-Language Langue de la ressource Content-Language: fr-FR
Content-Length Taille du corps en octets Content-Length: 135674
Content-Location Emplacement du fichier s’il provient d’un endroit différent de celui demandé (par exemple CDN) Content-Location: /exemple.fr
Content-Security-Policy Concepts de sécurité du serveur Content-Security-Policy: frame-src ‘none’; object-src ‘none’
Content-Type Type MIME du dossier demandé Content-Type: text/tml; charset=utf-8
Date Délai de réponse Date: Mon 2 Mar 2020 1:00:00 GMT
ETag Marque une version spécifique du fichier ETag: „vt6789oi8uztgfvbn“
Expires Quand le dossier doit être considéré comme obsolète Expires: Tue 3 Mar 2020 1:00:00 GMT
Last-Modified Date de la dernière modification du dossier Last-Modified: Mon 2 Mar 2020 1:00:00 GMT
Location Identifie le lieu où la demande a été transmise Location: https://www.exemple.fr
Proxy-Authenticate Indique si et comment le client doit s’authentifier auprès du proxy Proxy-Authenticate: Basic
Retry-After A partir de quand le client doit faire une nouvelle demande si la ressource est temporairement indisponible (date ou secondes) Retry-After: 300
Server Identification du serveur Server: Apache
Set-Cookie Installe un cookie chez le client Set-Cookie: UserID=XY; Max-Age=3800; Version=1
Transfer-Encoding Méthode de compression Transfer-Encoding: gpzip
Vary Indique quels champs d’en-tête doivent être considérés comme variables si un fichier est demandé dans le cache Vary: User-Agent (= le serveur contient différentes versions de fichiers selon l’User Agent)
Via Via quels proxies la réponse a été envoyée Via : 1.1www.exemple.fr
Conseil

Vous pouvez facilement lire les en-têtes HTTP de n’importe quel site Web avec ce petit outil. L’extension Chrome HTTP Header Analyzer est également pratique.


Nom de domaine en .alsace
Renforcez votre présence en ligne
locale avec le .alsace

9 € HT la 1ère année (10,80 € TTC), puis 60 € HT/an (72 € TTC)
.fr
1 € HT la 1ère année
puis 10 € HT/an
.alsace
9 € HT la 1ère année
puis 60 € HT/an
.com
1 € HT la 1ère année
puis 10 € HT/an
.org
1 € HT la 1ère année
puis 15 € HT/an