RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content
- Statut: Proposed Standard
- Publié: June 2014
- Stream: IETF
- Met à jour: RFC2817
- Remplace: RFC2616
- Remplacé par: RFC9110
- Errata: Pas d'errata
Résumé (Abstract)
Le protocole de transfert hypertexte (HTTP) est un protocole de niveau application sans état pour les systèmes d'information hypertexte distribués et collaboratifs. Ce document définit la sémantique des messages HTTP/1.1, telle qu'exprimée par les méthodes de requête, les champs d'en-tête de requête, les codes d'état de réponse et les champs d'en-tête de réponse, ainsi que la charge utile des messages (métadonnées et contenu du corps) et les mécanismes de négociation de contenu.
Table des Matières (Table of Contents)
Sections Principales (Core Sections)
-
- 1.1 Conformité et Gestion des Erreurs (Conformance and Error Handling)
- 1.2 Notation Syntaxique (Syntax Notation)
-
3. Représentations (Representations)
- 3.1 Métadonnées de Représentation (Representation Metadata)
- 3.2 Données de Représentation (Representation Data)
- 3.3 Sémantique de la Charge Utile (Payload Semantics)
- 3.4 Négociation de Contenu (Content Negotiation)
-
4. Méthodes de Requête (Request Methods) ⭐
- 4.1 Vue d'Ensemble (Overview)
- 4.2 Propriétés Communes des Méthodes (Common Method Properties)
- 4.2.1 Méthodes Sûres (Safe Methods)
- 4.2.2 Méthodes Idempotentes (Idempotent Methods)
- 4.2.3 Méthodes Pouvant Être Mises en Cache (Cacheable Methods)
- 4.3 Définitions des Méthodes (Method Definitions)
- 4.3.1 GET
- 4.3.2 HEAD
- 4.3.3 POST
- 4.3.4 PUT
- 4.3.5 DELETE
- 4.3.6 CONNECT
- 4.3.7 OPTIONS
- 4.3.8 TRACE
-
5. Champs d'En-tête de Requête (Request Header Fields)
- 5.1 Contrôles (Controls)
- 5.2 Conditions (Conditionals)
- 5.3 Négociation de Contenu (Content Negotiation)
- 5.4 Informations d'Authentification (Authentication Credentials)
- 5.5 Contexte de Requête (Request Context)
-
6. Codes d'État de Réponse (Response Status Codes)
- 6.1 Vue d'Ensemble des Codes d'État (Overview of Status Codes)
- 6.2 Informationnels 1xx (Informational 1xx)
- 6.3 Succès 2xx (Successful 2xx)
- 6.4 Redirection 3xx (Redirection 3xx)
- 6.5 Erreur Client 4xx (Client Error 4xx)
- 6.6 Erreur Serveur 5xx (Server Error 5xx)
-
7. Champs d'En-tête de Réponse (Response Header Fields)
- 7.1 Données de Contrôle (Control Data)
- 7.2 Champs d'En-tête de Validation (Validator Header Fields)
- 7.3 Défis d'Authentification (Authentication Challenges)
- 7.4 Contexte de Réponse (Response Context)
-
- 11.1 Références Normatives (Normative References)
- 11.2 Références Informatives (Informative References)
Annexes (Appendices)
- Annexe A. Changements par rapport à RFC 2616 (Changes from RFC 2616)
- Annexe B. ABNF Importé (Imported ABNF)
- Annexe C. ABNF Collecté (Collected ABNF)
- Annexe D. Index
Avis de Droit d'Auteur (Copyright Notice)
Copyright (c) 2014 IETF Trust et les personnes identifiées comme auteurs du document. Tous droits réservés.
Ressources Associées (Related Resources)
- Texte Officiel: RFC 7231 (TXT)
- Page Officielle: RFC 7231 DataTracker
- Rend Obsolète: RFC 2616
- Rendu Obsolète Par: RFC 9110 (Sémantique HTTP)
Caractéristiques Clés (Key Features)
Propriétés des Méthodes HTTP (HTTP Method Properties)
Ce document définit trois propriétés fondamentales pour les méthodes HTTP:
- Méthodes Sûres (Safe Methods): Opérations en lecture seule qui ne modifient pas l'état du serveur
- Méthodes Idempotentes (Idempotent Methods): Plusieurs requêtes identiques ont le même effet qu'une seule requête
- Méthodes Pouvant Être Mises en Cache (Cacheable Methods): Réponses pouvant être stockées et réutilisées
Résumé des Méthodes (Method Summary)
| Méthode | Sûre | Idempotente | Cacheable |
|---|---|---|---|
| GET | ✅ | ✅ | ✅ |
| HEAD | ✅ | ✅ | ✅ |
| POST | ❌ | ❌ | ⚠️ |
| PUT | ❌ | ✅ | ❌ |
| DELETE | ❌ | ✅ | ❌ |
| CONNECT | ❌ | ❌ | ❌ |
| OPTIONS | ✅ | ✅ | ❌ |
| TRACE | ✅ | ✅ | ❌ |
Glossary (Glossaire)
Concepts fondamentaux
Resource (Ressource)
Concept abstrait d'information, toute chose pouvant être identifiée par un URI. Une ressource peut être un document, une image, un service, une personne ou un concept abstrait.
Exemples:
https://api.example.com/users/123- Ressource utilisateurhttps://example.com/logo.png- Ressource image
Representation (Représentation)
Information d'état d'une ressource à un moment donné, composée de données et de métadonnées décrivant les données.
Exemple:
Content-Type: application/json
Content-Language: fr
{"id": 123, "name": "Jean Dupont"}
User Agent (Agent utilisateur)
Programme client qui initie des requêtes HTTP, comme un navigateur, une application mobile ou un outil en ligne de commande.
Exemples: Navigateur, curl, application mobile
Origin Server (Serveur d'origine)
Source autoritaire d'une ressource, serveur capable de fournir la représentation finale d'une ressource.
Attributs de méthode
Safe Method (Méthode sûre)
Opération en lecture seule qui ne demande ni ne s'attend à modifier l'état du serveur.
Méthodes sûres: GET, HEAD, OPTIONS, TRACE
Idempotent Method (Méthode idempotente)
Méthode dont l'effet de plusieurs requêtes identiques est le même qu'une seule requête.
Méthodes idempotentes: GET, HEAD, PUT, DELETE, OPTIONS, TRACE
Cacheable Method (Méthode cacheable)
Méthode dont les réponses peuvent être stockées et réutilisées dans les requêtes ultérieures.
Méthodes cacheables: GET, HEAD, POST (conditionnel)
Négociation de contenu
Proactive Negotiation (Négociation proactive)
Le client spécifie les préférences via les en-têtes de requête, le serveur sélectionne la meilleure représentation.
En-têtes de requête: Accept, Accept-Language, Accept-Encoding, Accept-Charset
Reactive Negotiation (Négociation réactive)
Le serveur fournit plusieurs choix, le client sélectionne la représentation appropriée.
Code d'état: 300 Multiple Choices
Content Negotiation (Négociation de contenu)
Mécanisme de sélection de la meilleure représentation parmi plusieurs représentations d'une même ressource.
Champs d'en-tête
Representation Metadata (Métadonnées de représentation)
Champs d'en-tête décrivant les données de représentation.
Exemples: Content-Type, Content-Encoding, Content-Language, Content-Location
Request Modifiers (Modificateurs de requête)
Champs d'en-tête modifiant la sémantique de la requête.
Exemples: If-Modified-Since, If-None-Match, Range
Response Control Data (Données de contrôle de réponse)
Champs d'en-tête contrôlant le traitement de la réponse.
Exemples: Age, Cache-Control, Expires, Vary
Terminologie des codes d'état
1xx Informational (Informatif)
Réponse temporaire indiquant que la requête a été reçue et que le traitement continue.
Exemples: 100 Continue, 101 Switching Protocols
2xx Successful (Succès)
La requête a été reçue, comprise et acceptée avec succès.
Exemples: 200 OK, 201 Created, 204 No Content
3xx Redirection
Des actions supplémentaires sont nécessaires pour compléter la requête.
Exemples: 301 Moved Permanently, 302 Found, 304 Not Modified
4xx Client Error (Erreur client)
La requête contient une erreur de syntaxe ou ne peut être complétée.
Exemples: 400 Bad Request, 404 Not Found, 403 Forbidden
5xx Server Error (Erreur serveur)
Le serveur n'a pas pu compléter une requête valide.
Exemples: 500 Internal Server Error, 503 Service Unavailable
Composants de message
Message
Unité de base de la communication HTTP, composée d'en-têtes et d'un corps de message optionnel.
Types: Request Message (Message de requête), Response Message (Message de réponse)
Header Field (Champ d'en-tête)
Métadonnées dans le message, format field-name: field-value.
Exemple:
Content-Type: application/json
Content-Length: 123
Message Body (Corps de message)
Données réellement transférées.
Payload (Charge utile)
Données transférées dans une requête ou une réponse et leurs métadonnées.
Liés au cache
Fresh (Frais)
La réponse en cache est dans sa période de validité et peut être utilisée directement sans revalidation.
Stale (Périmé)
La réponse en cache a expiré et nécessite une revalidation ou l'obtention d'une nouvelle réponse.
Cache-Control (Contrôle de cache)
Directives pour contrôler le comportement du cache.
Exemples:
Cache-Control: max-age=3600
Cache-Control: no-cache
Cache-Control: private
Liés à la connexion
Connection (Connexion)
Connexion de couche transport entre client et serveur.
Persistent Connection (Connexion persistante)
Connexion pouvant être utilisée pour plusieurs échanges requête/réponse.
HTTP/1.1: Connexion persistante par défaut
Autres termes
URI (Uniform Resource Identifier)
Identificateur de ressource uniforme pour identifier les ressources.
Format: scheme://authority/path?query#fragment
Exemple: https://api.example.com/users?page=1
Media Type (Type de média)
Format de représentation de ressource, également appelé type MIME.
Format: type/subtype[;parameter=value]
Exemples: application/json, text/html; charset=utf-8
Quality Value (Valeur de qualité)
Valeur numérique indiquant le degré de préférence, plage 0.0-1.0.
Exemple: Accept: text/html, application/json;q=0.9
Payload Too Large (Charge utile trop grande)
Le corps du message de requête ou de réponse dépasse la taille que le serveur est disposé ou capable de traiter.
Code d'état: 413 Payload Too Large
Abréviations
| Abréviation | Nom complet | Français |
|---|---|---|
| HTTP | Hypertext Transfer Protocol | Protocole de transfert hypertexte |
| URI | Uniform Resource Identifier | Identificateur de ressource uniforme |
| URL | Uniform Resource Locator | Localisateur de ressource uniforme |
| MIME | Multipurpose Internet Mail Extensions | Extensions de courrier Internet polyvalentes |
| ABNF | Augmented Backus-Naur Form | Forme de Backus-Naur augmentée |
| IANA | Internet Assigned Numbers Authority | Autorité d'attribution des numéros Internet |
| RFC | Request for Comments | Demande de commentaires |
| IETF | Internet Engineering Task Force | Groupe de travail d'ingénierie Internet |
Retour: Page d'accueil RFC 7231