14. Header Field Definitions (Définitions des Champs d'En-tête)
Ce chapitre définit la syntaxe et la sémantique de tous les champs d'en-tête HTTP standard dans la norme HTTP/1.1. L'expéditeur ne devrait pas (SHOULD NOT) générer de champs d'en-tête non définis dans ce chapitre ou dans la section 7.1 (champs d'en-tête d'entité), à moins que le destinataire ne les traite comme faisant partie du corps de l'entité.
Classification des Champs d'En-tête
Les champs d'en-tête HTTP peuvent être classés en plusieurs catégories selon leur fonction :
Champs d'En-tête Généraux (General Header Fields)
Applicables aux messages de requête et de réponse, mais pas à l'entité transmise.
Champs d'En-tête de Requête (Request Header Fields)
Permettent au client de transmettre des informations supplémentaires sur la requête et le client lui-même au serveur.
Champs d'En-tête de Réponse (Response Header Fields)
Permettent au serveur de transmettre des informations supplémentaires sur la réponse qui ne peuvent pas être placées dans la ligne d'état.
Champs d'En-tête d'Entité (Entity Header Fields)
Définissent les méta-informations sur le corps de l'entité ou la ressource identifiée par la requête.
Liste Complète des Champs d'En-tête HTTP/1.1
Champs d'En-tête de Négociation de Contenu
| Champ d'En-tête | Objectif | Exemple |
|---|---|---|
| 14.1 Accept | Spécifie les types de médias acceptables par le client | Accept: text/html, application/json |
| 14.2 Accept-Charset | Spécifie les jeux de caractères acceptables par le client | Accept-Charset: utf-8, iso-8859-1 |
| 14.3 Accept-Encoding | Spécifie les encodages de contenu acceptables par le client | Accept-Encoding: gzip, deflate |
| 14.4 Accept-Language | Spécifie les langues préférées du client | Accept-Language: fr, en |
| 14.5 Accept-Ranges | Indique si le serveur accepte les requêtes de plage | Accept-Ranges: bytes |
Champs d'En-tête d'Authentification
| Champ d'En-tête | Objectif | Type |
|---|---|---|
| 14.8 Authorization | Contient les informations d'identification de l'agent utilisateur | En-tête de requête |
| 14.33 Proxy-Authenticate | Défi d'authentification du serveur proxy | En-tête de réponse |
| 14.34 Proxy-Authorization | Informations d'identification fournies par le client au proxy | En-tête de requête |
| 14.47 WWW-Authenticate | Défi d'authentification du serveur | En-tête de réponse |
Champs d'En-tête de Contrôle du Cache
| Champ d'En-tête | Objectif | Description |
|---|---|---|
| 14.6 Age | Temps de séjour de la réponse dans le cache proxy | En-tête de réponse |
| 14.9 Cache-Control | Spécifie les directives de mise en cache | En-tête général |
| 14.21 Expires | Spécifie la date/heure d'expiration de la réponse | En-tête d'entité |
| 14.32 Pragma | Directives spécifiques à l'implémentation (rétrocompatibilité) | En-tête général |
| 14.44 Vary | Indique quels en-têtes de requête affectent la sélection du cache | En-tête de réponse |
Champs d'En-tête de Requête Conditionnelle
| Champ d'En-tête | Objectif | Méthode de Validation |
|---|---|---|
| 14.24 If-Match | Exécuter uniquement si l'ETag correspond | Validation forte |
| 14.25 If-Modified-Since | Exécuter uniquement si la ressource a été modifiée | Validation temporelle |
| 14.26 If-None-Match | Exécuter uniquement si l'ETag ne correspond pas | Validation forte/faible |
| 14.27 If-Range | Requête de plage conditionnelle | Validation combinée |
| 14.28 If-Unmodified-Since | Exécuter uniquement si la ressource n'a pas été modifiée | Validation temporelle |
Champs d'En-tête de Description de Contenu
| Champ d'En-tête | Objectif | Description |
|---|---|---|
| 14.11 Content-Encoding | Encodage appliqué au corps de l'entité | gzip, compress, deflate |
| 14.12 Content-Language | Langue naturelle du corps de l'entité | fr-FR, en-US |
| 14.13 Content-Length | Longueur en octets du corps de l'entité | Numérique |
| 14.14 Content-Location | Emplacement alternatif de l'entité | URI |
| 14.15 Content-MD5 | Digest MD5 du corps de l'entité | Encodé en Base64 |
| 14.16 Content-Range | Position du corps d'entité partielle | bytes 200-1000/1234 |
| 14.17 Content-Type | Type de média du corps de l'entité | text/html; charset=utf-8 |
Champs d'En-tête de Gestion de Connexion
| Champ d'En-tête | Objectif | Description |
|---|---|---|
| 14.10 Connection | Contrôle les options de la connexion actuelle | keep-alive, close |
| 14.23 Host | Hôte et numéro de port de la requête | En-tête de requête obligatoire |
| 14.39 TE | Encodages de transfert acceptables par le client | trailers, deflate |
| 14.40 Trailer | Indique les champs d'en-tête présents dans le trailer du message | Encodage par morceaux |
| 14.41 Transfer-Encoding | Encodage de transfert appliqué au corps du message | chunked |
| 14.42 Upgrade | Demande de basculement vers d'autres protocoles | HTTP/2.0, WebSocket |
| 14.45 Via | Enregistre les proxies et passerelles intermédiaires | Suivi du chemin |
Champs d'En-tête de Validation d'Entité
| Champ d'En-tête | Objectif | Type |
|---|---|---|
| 14.19 ETag | Étiquette d'entité (identifiant unique) | Validateur fort/faible |
| 14.29 Last-Modified | Heure de dernière modification de la ressource | Horodatage |
Champs d'En-tête de Contrôle de Requête
| Champ d'En-tête | Objectif | Description |
|---|---|---|
| 14.7 Allow | Méthodes HTTP supportées par la ressource | GET, POST, PUT |
| 14.20 Expect | Comportement serveur spécifique attendu par le client | 100-continue |
| 14.22 From | Adresse e-mail de l'utilisateur demandeur | Informatif |
| 14.31 Max-Forwards | Nombre maximum de transmissions pour les requêtes TRACE/OPTIONS | Numérique |
| 14.35 Range | Demande de contenu partiel de l'entité | bytes=0-499 |
| 14.36 Referer | Adresse source de l'URI de requête | URI |
Champs d'En-tête de Contrôle de Réponse
| Champ d'En-tête | Objectif | Description |
|---|---|---|
| 14.18 Date | Date et heure de création du message | Format de date HTTP |
| 14.30 Location | URI de redirection ou de ressource nouvellement créée | URI absolue/relative |
| 14.37 Retry-After | Suggère quand le client devrait réessayer | Date ou secondes |
| 14.38 Server | Informations logicielles du serveur d'origine | Nom et version du logiciel |
| 14.46 Warning | Informations d'avertissement supplémentaires | Code d'avertissement à trois chiffres |
Informations sur l'Agent Utilisateur
| Champ d'En-tête | Objectif | Description |
|---|---|---|
| 14.43 User-Agent | Informations sur l'agent utilisateur initiateur de la requête | Identification du navigateur |
Règles de Syntaxe des Champs d'En-tête
Les règles de syntaxe pour toutes les valeurs de champs d'en-tête HTTP/1.1 sont décrites dans la section 2.2 (Règles de base) et dans cette section.
Règles de Syntaxe Générales
message-header = field-name ":" [ field-value ]
field-name = token
field-value = *( field-content | LWS )
Champs d'En-tête Multi-valeurs
Certains champs d'en-tête peuvent contenir plusieurs valeurs, qui peuvent être représentées de deux manières :
-
Un seul champ d'en-tête, valeurs séparées par des virgules :
Accept: text/html, application/json, */* -
Plusieurs champs d'en-tête de même nom :
Accept: text/html
Accept: application/json
Accept: */*
Formats de Date/Heure
Les applications HTTP doivent accepter les trois formats de date/heure suivants :
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 asctime() format
Remarques Importantes
Extensibilité des Champs d'En-tête
HTTP/1.1 permet les champs d'en-tête d'extension, mais les destinataires doivent être capables de traiter les champs d'en-tête inconnus :
- Proxies - doivent transmettre les champs d'en-tête non reconnus
- Agents utilisateurs - devraient ignorer les champs d'en-tête non reconnus
Ordre des Champs d'En-tête
Sauf indication contraire dans la définition du champ d'en-tête, l'ordre des champs d'en-tête n'est pas important. Cependant, il est recommandé d'envoyer d'abord les champs d'en-tête généraux, puis les champs d'en-tête de requête ou de réponse, et enfin les champs d'en-tête d'entité.
Limites de Taille des Champs d'En-tête
Bien que HTTP n'impose pas de limite prédéfinie à la longueur des champs d'en-tête, les implémentations devraient être prêtes à accepter des champs d'en-tête de toute longueur raisonnable.
Références Associées
- Pour la définition complète des champs d'en-tête, veuillez consulter le chapitre 14 original de RFC 2616
- Pour les spécifications de champs d'en-tête mises à jour, veuillez consulter RFC 7230-7235 (nouvelle version HTTP/1.1)
- Registre des champs d'en-tête HTTP IANA : https://www.iana.org/assignments/message-headers
Remarque : Ce chapitre fournit un aperçu de tous les champs d'en-tête HTTP/1.1 standard. Chaque champ d'en-tête a des règles de syntaxe détaillées, des scénarios d'utilisation et des exemples. Dans les applications réelles, comprendre l'utilisation correcte de ces champs d'en-tête est essentiel pour construire des applications HTTP conformes aux normes.