Aller au contenu principal

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)​

Annexes (Appendices)​


Copyright (c) 2014 IETF Trust et les personnes identifiées comme auteurs du document. Tous droits réservés.



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:

  1. Méthodes Sûres (Safe Methods): Opérations en lecture seule qui ne modifient pas l'état du serveur
  2. Méthodes Idempotentes (Idempotent Methods): Plusieurs requêtes identiques ont le même effet qu'une seule requête
  3. 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éthodeSûreIdempotenteCacheable
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 utilisateur
  • https://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éviationNom completFrançais
HTTPHypertext Transfer ProtocolProtocole de transfert hypertexte
URIUniform Resource IdentifierIdentificateur de ressource uniforme
URLUniform Resource LocatorLocalisateur de ressource uniforme
MIMEMultipurpose Internet Mail ExtensionsExtensions de courrier Internet polyvalentes
ABNFAugmented Backus-Naur FormForme de Backus-Naur augmentée
IANAInternet Assigned Numbers AuthorityAutorité d'attribution des numéros Internet
RFCRequest for CommentsDemande de commentaires
IETFInternet Engineering Task ForceGroupe de travail d'ingénierie Internet

Retour: Page d'accueil RFC 7231