Aller au contenu principal

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êteObjectifExemple
14.1 AcceptSpécifie les types de médias acceptables par le clientAccept: text/html, application/json
14.2 Accept-CharsetSpécifie les jeux de caractères acceptables par le clientAccept-Charset: utf-8, iso-8859-1
14.3 Accept-EncodingSpécifie les encodages de contenu acceptables par le clientAccept-Encoding: gzip, deflate
14.4 Accept-LanguageSpécifie les langues préférées du clientAccept-Language: fr, en
14.5 Accept-RangesIndique si le serveur accepte les requêtes de plageAccept-Ranges: bytes

Champs d'En-tête d'Authentification

Champ d'En-têteObjectifType
14.8 AuthorizationContient les informations d'identification de l'agent utilisateurEn-tête de requête
14.33 Proxy-AuthenticateDéfi d'authentification du serveur proxyEn-tête de réponse
14.34 Proxy-AuthorizationInformations d'identification fournies par le client au proxyEn-tête de requête
14.47 WWW-AuthenticateDéfi d'authentification du serveurEn-tête de réponse

Champs d'En-tête de Contrôle du Cache

Champ d'En-têteObjectifDescription
14.6 AgeTemps de séjour de la réponse dans le cache proxyEn-tête de réponse
14.9 Cache-ControlSpécifie les directives de mise en cacheEn-tête général
14.21 ExpiresSpécifie la date/heure d'expiration de la réponseEn-tête d'entité
14.32 PragmaDirectives spécifiques à l'implémentation (rétrocompatibilité)En-tête général
14.44 VaryIndique quels en-têtes de requête affectent la sélection du cacheEn-tête de réponse

Champs d'En-tête de Requête Conditionnelle

Champ d'En-têteObjectifMéthode de Validation
14.24 If-MatchExécuter uniquement si l'ETag correspondValidation forte
14.25 If-Modified-SinceExécuter uniquement si la ressource a été modifiéeValidation temporelle
14.26 If-None-MatchExécuter uniquement si l'ETag ne correspond pasValidation forte/faible
14.27 If-RangeRequête de plage conditionnelleValidation combinée
14.28 If-Unmodified-SinceExécuter uniquement si la ressource n'a pas été modifiéeValidation temporelle

Champs d'En-tête de Description de Contenu

Champ d'En-têteObjectifDescription
14.11 Content-EncodingEncodage appliqué au corps de l'entitégzip, compress, deflate
14.12 Content-LanguageLangue naturelle du corps de l'entitéfr-FR, en-US
14.13 Content-LengthLongueur en octets du corps de l'entitéNumérique
14.14 Content-LocationEmplacement alternatif de l'entitéURI
14.15 Content-MD5Digest MD5 du corps de l'entitéEncodé en Base64
14.16 Content-RangePosition du corps d'entité partiellebytes 200-1000/1234
14.17 Content-TypeType 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êteObjectifDescription
14.10 ConnectionContrôle les options de la connexion actuellekeep-alive, close
14.23 HostHôte et numéro de port de la requêteEn-tête de requête obligatoire
14.39 TEEncodages de transfert acceptables par le clienttrailers, deflate
14.40 TrailerIndique les champs d'en-tête présents dans le trailer du messageEncodage par morceaux
14.41 Transfer-EncodingEncodage de transfert appliqué au corps du messagechunked
14.42 UpgradeDemande de basculement vers d'autres protocolesHTTP/2.0, WebSocket
14.45 ViaEnregistre les proxies et passerelles intermédiairesSuivi du chemin

Champs d'En-tête de Validation d'Entité

Champ d'En-têteObjectifType
14.19 ETagÉtiquette d'entité (identifiant unique)Validateur fort/faible
14.29 Last-ModifiedHeure de dernière modification de la ressourceHorodatage

Champs d'En-tête de Contrôle de Requête

Champ d'En-têteObjectifDescription
14.7 AllowMéthodes HTTP supportées par la ressourceGET, POST, PUT
14.20 ExpectComportement serveur spécifique attendu par le client100-continue
14.22 FromAdresse e-mail de l'utilisateur demandeurInformatif
14.31 Max-ForwardsNombre maximum de transmissions pour les requêtes TRACE/OPTIONSNumérique
14.35 RangeDemande de contenu partiel de l'entitébytes=0-499
14.36 RefererAdresse source de l'URI de requêteURI

Champs d'En-tête de Contrôle de Réponse

Champ d'En-têteObjectifDescription
14.18 DateDate et heure de création du messageFormat de date HTTP
14.30 LocationURI de redirection ou de ressource nouvellement crééeURI absolue/relative
14.37 Retry-AfterSuggère quand le client devrait réessayerDate ou secondes
14.38 ServerInformations logicielles du serveur d'origineNom et version du logiciel
14.46 WarningInformations d'avertissement supplémentairesCode d'avertissement à trois chiffres

Informations sur l'Agent Utilisateur

Champ d'En-têteObjectifDescription
14.43 User-AgentInformations sur l'agent utilisateur initiateur de la requêteIdentification 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 :

  1. Un seul champ d'en-tête, valeurs séparées par des virgules :

    Accept: text/html, application/json, */*
  2. 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.