Hypertext Transfer Protocol (HTTP/1.1) : Syntaxe et Routage des Messages
- Statut: Proposed Standard
- Publié: June 2014
- Stream: IETF
- Met à jour: RFC2817, RFC2818
- Remplace: RFC2145, RFC2616
- Remplacé par: RFC9110, RFC9112
- Errata: Pas d'errata
Informations sur le document
- Numéro RFC : 7230
- Titre : HTTP/1.1: Message Syntax and Routing
- Publié : juin 2014
- Auteurs : R. Fielding (Adobe), J. Reschke (greenbytes)
- Statut : Standards Track
- Rend obsolète : RFC 2616, RFC 2145
- Met à jour : RFC 2817, RFC 2818
Résumé
Le protocole de transfert hypertexte (HTTP, Hypertext Transfer Protocol) est un protocole de couche application sans état pour les systèmes d'information hypertexte distribués et collaboratifs.
Ce document fournit une vue d'ensemble de l'architecture HTTP et de sa terminologie associée, définit les schémas URI (Uniform Resource Identifier, identifiant de ressource uniforme) « http » et « https », définit la syntaxe des messages HTTP/1.1 et les exigences d'analyse, et décrit les préoccupations de sécurité associées pour les implémentations.
Table des matières
Sections principales
-
Introduction
- 1.1 Notation des exigences
- 1.2 Notation syntaxique
-
Architecture
- 2.1 Messagerie client/serveur
- 2.2 Diversité des implémentations
- 2.3 Intermédiaires
- 2.4 Caches
- 2.5 Conformité et gestion des erreurs
- 2.6 Versionnage du protocole
- 2.7 Identifiants de ressources uniformes
-
Format des messages
- 3.1 Ligne de départ
- 3.2 Champs d'en-tête
- 3.3 Corps du message
-
Codages de transfert
- 4.1 Codage de transfert par morceaux (chunked)
- 4.2 Codages de compression
- 4.3 Champ d'en-tête TE
- 4.4 Champ d'en-tête Trailer
-
Routage des messages
- 5.1 Identification d'une ressource cible
- 5.2 Connexion entrante
- 5.3 Cible de la requête
- 5.4 Champ d'en-tête Host
- 5.5 URI de requête effectif
- 5.6 Association d'une réponse à une requête
- 5.7 Transfert de messages
-
Gestion des connexions
- 6.1 Champ d'en-tête Connection
- 6.2 Établissement
- 6.3 Persistance
- 6.4 Concurrence
- 6.5 Échecs et délais d'attente
- 6.6 Fermeture
- 6.7 Champ d'en-tête Upgrade
-
Extension de liste ABNF
-
Considérations IANA
-
Considérations de sécurité
Annexes
- Annexe A - Historique des versions HTTP
- Annexe B - ABNF collecté
- Références
Série de spécifications HTTP/1.1
Le RFC 7230 est la première partie de la série de spécifications HTTP/1.1 :
- RFC 7230 - Syntaxe et routage des messages (ce document)
- RFC 7231 - Sémantique et contenu
- RFC 7232 - Requêtes conditionnelles
- RFC 7233 - Requêtes de plage
- RFC 7234 - Mise en cache
- RFC 7235 - Authentification
Concepts fondamentaux
Termes clés
- Client : programme qui établit une connexion pour envoyer des requêtes HTTP
- Serveur : programme qui accepte les connexions pour traiter les requêtes HTTP
- Agent utilisateur (User Agent) : programme client qui initie les requêtes (navigateurs, robots d'exploration, etc.)
- Serveur d'origine (Origin Server) : programme pouvant générer des réponses faisant autorité
- Intermédiaire (Intermediary) : proxy, passerelle ou tunnel
- Cache : stockage local des réponses précédentes
Structure des messages HTTP
HTTP-message = start-line
*( header-field CRLF )
CRLF
[ message-body ]
Exemple de requête
GET /hello.txt HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept-Language: fr
Exemple de réponse
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Content-Length: 51
Content-Type: text/plain
Hello World! My payload includes a trailing CRLF.
Caractéristiques importantes
- Protocole sans état — chaque requête est traitée indépendamment
- Connexions persistantes — HTTP/1.1 utilise des connexions persistantes par défaut
- Codage de transfert par morceaux (Chunked Transfer Encoding) — permet d'envoyer des données sans connaître la longueur totale
- Prise en charge des intermédiaires — prend en charge les proxies, passerelles et tunnels
- Mise à niveau du protocole — prend en charge la mise à niveau vers d'autres protocoles (par exemple, WebSocket)
Considérations de sécurité
- Validation des entrées — toujours valider et assainir les entrées utilisateur
- Limites de longueur — mettre en œuvre des limites sur la ligne de requête et les longueurs des champs d'en-tête
- Utiliser HTTPS — utiliser le chiffrement TLS pour les communications sensibles
- Prévenir le contrebande de requêtes (Request Smuggling) — suivre strictement les règles d'analyse des messages
- Sécurité des intermédiaires — gérer soigneusement les proxies et passerelles
- Protection de la vie privée — protéger les informations personnelles dans les journaux du serveur
Avis de droits d'auteur
Copyright © 2014 IETF Trust and the persons identified as the document authors. All rights reserved.
Ce document est soumis au BCP 78 et aux dispositions légales de l'IETF Trust.
Ressources connexes
- Document officiel : https://www.rfc-editor.org/rfc/rfc7230.html
- Errata : https://www.rfc-editor.org/errata_search.php?rfc=7230
📌 Commencer la lecture : Commencez par Section 1 - Introduction