RFC 9110 - HTTP Semantics (Sémantique HTTP)
- Statut: Internet Standard
- Publié: June 2022
- Stream: IETF
- Met à jour: RFC3864
- Remplace: RFC2818, RFC7230, RFC7231, RFC7232, RFC7233, RFC7235, RFC7538, RFC7615, RFC7694
- Errata: Pas d'errata
Abstract (Résumé)
Le Hypertext Transfer Protocol (HTTP) est un protocole au niveau application sans état pour les systèmes d'information hypertexte distribués et collaboratifs. Ce document définit la sémantique de HTTP: architecture, terminologie, méthodes de requête, codes de statut de réponse, champs d'en-tête et concepts fondamentaux associés.
Importance: Il s'agit de la dernière spécification HTTP de base (2022), applicable à toutes les versions, y compris HTTP/1.1, HTTP/2 et HTTP/3.
Contents (Contenu)
Sections principales
-
- 1.1. Purpose (Objectif)
- 1.2. History and Evolution (Histoire et évolution)
- 1.3. Core Semantics (Sémantique de base)
- 1.4. Specifications Obsoleted by This Document (Spécifications rendues obsolètes par ce document)
-
- 2.1. Syntax Notation (Notation syntaxique)
- 2.2. Requirements Notation (Notation des exigences)
- 2.3. Length Requirements (Exigences de longueur)
- 2.4. Error Handling (Gestion des erreurs)
- 2.5. Protocol Version (Version du protocole)
-
3. Terminology and Core Concepts (Terminologie et concepts de base)
- 3.1. Resources (Ressources)
- 3.2. Representations (Représentations)
- 3.3. Connections, Clients, and Servers (Connexions, clients et serveurs)
- 3.4. Messages
- 3.5. User Agents (Agents utilisateurs)
- 3.6. Origin Server (Serveur d'origine)
- 3.7. Intermediaries (Intermédiaires)
- 3.8. Caches
- 3.9. Example Message Exchange (Exemple d'échange de messages)
-
4. Identifiers in HTTP (Identificateurs dans HTTP)
- 4.1. URI References (Références URI)
- 4.2. HTTP-Related URI Schemes (Schémas URI liés à HTTP)
- 4.3. Authoritative Access (Accès autoritaire)
-
- 5.1. Field Names (Noms de champs)
- 5.2. Field Lines and Combined Field Value (Lignes de champs et valeur de champ combinée)
- 5.3. Field Order (Ordre des champs)
- 5.4. Field Limits (Limites de champs)
- 5.5. Field Values (Valeurs de champs)
- 5.6. Common Rules for Defining Field Values (Règles communes pour définir les valeurs de champs)
-
6. Message Abstraction (Abstraction de message)
- 6.1. Framing and Completeness (Cadrage et complétude)
- 6.2. Control Data (Données de contrôle)
- 6.3. Header Fields (Champs d'en-tête)
- 6.4. Content (Contenu)
- 6.5. Trailer Fields (Champs de fin)
- 6.6. Message Metadata (Métadonnées du message)
-
7. Routing HTTP Messages (Routage des messages HTTP)
- 7.1. Determining the Target Resource (Détermination de la ressource cible)
- 7.2. Host and :authority
- 7.3. Routing Inbound Requests (Routage des requêtes entrantes)
- 7.4. Rejecting Misdirected Requests (Rejet des requêtes mal dirigées)
- 7.5. Response Correlation (Corrélation des réponses)
- 7.6. Message Forwarding (Transfert de messages)
- 7.7. Message Transformations (Transformations de messages)
- 7.8. Upgrade (Mise à niveau)
-
8. Representation Data and Metadata (Données et métadonnées de représentation)
- 8.1. Representation Data (Données de représentation)
- 8.2. Representation Metadata (Métadonnées de représentation)
- 8.3. Content-Type
- 8.4. Content-Encoding
- 8.5. Content-Language
- 8.6. Content-Length
- 8.7. Content-Location
- 8.8. Validator Fields (Champs de validation)
-
- 9.1. Overview (Aperçu)
- 9.2. Common Method Properties (Propriétés communes des méthodes)
- 9.3. Method Definitions (Définitions des méthodes)
-
10. Message Context (Contexte du message)
- 10.1. Request Context Fields (Champs de contexte de requête)
- 10.2. Response Context Fields (Champs de contexte de réponse)
-
11. HTTP Authentication (Authentification HTTP)
- 11.1. Authentication Scheme (Schéma d'authentification)
- 11.2. Authentication Parameters (Paramètres d'authentification)
- 11.3. Challenge and Response (Défi et réponse)
- 11.4. Credentials (Informations d'identification)
- 11.5. Establishing a Protection Space (Realm) (Établissement d'un espace de protection)
- 11.6. Authenticating Users to Origin Servers (Authentification des utilisateurs auprès des serveurs d'origine)
- 11.7. Authenticating Clients to Proxies (Authentification des clients auprès des proxys)
-
12. Content Negotiation (Négociation de contenu)
- 12.1. Proactive Negotiation (Négociation proactive)
- 12.2. Reactive Negotiation (Négociation réactive)
- 12.3. Request Content Negotiation (Négociation du contenu de la requête)
- 12.4. Content Negotiation Field Features (Caractéristiques des champs de négociation de contenu)
- 12.5. Content Negotiation Fields (Champs de négociation de contenu)
-
13. Conditional Requests (Requêtes conditionnelles)
- 13.1. Preconditions (Préconditions)
- 13.2. Evaluation of Preconditions (Évaluation des préconditions)
-
14. Range Requests (Requêtes de plage)
- 14.1. Range Units (Unités de plage)
- 14.2. Range
- 14.3. Accept-Ranges
- 14.4. Content-Range
- 14.5. Partial PUT
- 14.6. Media Type multipart/byteranges
-
15. Status Codes (Codes de statut)
- 15.1. Overview of Status Codes (Aperçu des codes de statut)
- 15.2. Informational 1xx (Informatif)
- 15.3. Successful 2xx (Succès)
- 15.4. Redirection 3xx
- 15.5. Client Error 4xx (Erreur client)
- 15.6. Server Error 5xx (Erreur serveur)
-
16. Extending HTTP (Extension de HTTP)
- 16.1. Method Extensibility (Extensibilité des méthodes)
- 16.2. Status Code Extensibility (Extensibilité des codes de statut)
- 16.3. Field Extensibility (Extensibilité des champs)
- 16.4. Authentication Scheme Extensibility (Extensibilité des schémas d'authentification)
- 16.5. Range Unit Extensibility (Extensibilité des unités de plage)
- 16.6. Content Coding Extensibility (Extensibilité du codage de contenu)
- 16.7. Upgrade Token Registry (Registre des jetons de mise à niveau)
-
17. Security Considerations (Considérations de sécurité)
- 17.1. Establishing Authority (Établissement de l'autorité)
- 17.2. Risks of Intermediaries (Risques des intermédiaires)
- 17.3-17.16. [Divers sujets de sécurité]
-
18. IANA Considerations (Considérations IANA)
- 18.1. URI Scheme Registration (Enregistrement de schéma URI)
- 18.2. Method Registration (Enregistrement de méthode)
- 18.3-18.10. [Autres registres]
-
- 19.1. Normative References (Références normatives)
- 19.2. Informative References (Références informatives)
Annexes (Appendices)
- Appendix A. Collected ABNF (ABNF collecté)
- Appendix B. Changes from Previous RFCs (Changements par rapport aux RFC précédents)
Ressources connexes
- Texte officiel: RFC 9110
- Page officielle: RFC 9110 DataTracker
- Errata: RFC Editor Errata
Comprendre RFC 9110
Réorganisation majeure de la spécification HTTP
RFC 9110 est la dernière spécification HTTP de base publiée en 2022, consolidant et remplaçant la série précédente RFC 7230-7235:
Anciennes spécifications (2014):
- RFC 7230 - Message Syntax and Routing (Syntaxe et routage des messages)
- RFC 7231 - Semantics and Content (Sémantique et contenu)
- RFC 7232 - Conditional Requests (Requêtes conditionnelles)
- RFC 7233 - Range Requests (Requêtes de plage)
- RFC 7234 - Caching (Mise en cache)
- RFC 7235 - Authentication (Authentification)
Nouvelles spécifications (2022):
- RFC 9110 - Semantics (ce RFC) ← Spécification de base unifiée
- RFC 9111 - Caching (Mise en cache)
- RFC 9112 - HTTP/1.1
- RFC 9113 - HTTP/2
- RFC 9114 - HTTP/3
Importance
RFC 9110 définit la sémantique partagée entre toutes les versions HTTP, qu'il s'agisse de HTTP/1.1, HTTP/2 ou HTTP/3. Cela rend le protocole HTTP plus unifié et plus facile à comprendre.
Note: Ce document est en cours de traduction, et le contenu des chapitres sera progressivement complété.