Aller au contenu principal

1. Introduction

Le protocole de transfert hypertexte (Hypertext Transfer Protocol, HTTP) est un protocole de requête/réponse sans état de la couche application qui utilise une sémantique extensible et des messages auto-descriptifs pour une interaction flexible avec les systèmes d'information hypertexte basés sur le réseau. HTTP/1.1 est défini par :

  • Ce document
  • "HTTP Semantics" [HTTP]
  • "HTTP Caching" [CACHING]

Ce document spécifie comment la sémantique HTTP est transmise en utilisant la syntaxe des messages HTTP/1.1, le cadrage et les mécanismes de gestion des connexions. Son objectif est de définir l'ensemble complet des exigences pour les analyseurs de messages HTTP/1.1 et les intermédiaires de transmission de messages.

Ce document rend obsolètes les parties de la RFC 7230 relatives à la messagerie et à la gestion des connexions HTTP/1.1, les modifications étant résumées dans l'annexe C.3. Les autres parties de la RFC 7230 sont rendues obsolètes par "HTTP Semantics" [HTTP].

1.1. Notation des exigences (Requirements Notation)

Les mots-clés "DOIT" (MUST), "NE DOIT PAS" (MUST NOT), "REQUIS" (REQUIRED), "DEVRA" (SHALL), "NE DEVRA PAS" (SHALL NOT), "DEVRAIT" (SHOULD), "NE DEVRAIT PAS" (SHOULD NOT), "RECOMMANDÉ" (RECOMMENDED), "NON RECOMMANDÉ" (NOT RECOMMENDED), "PEUT" (MAY) et "OPTIONNEL" (OPTIONAL) dans ce document doivent être interprétés comme décrit dans BCP 14 [RFC2119] [RFC8174] lorsque, et seulement lorsque, ils apparaissent en majuscules, comme indiqué ici.

Les critères de conformité et les considérations concernant le traitement des erreurs sont définis dans la section 2 de [HTTP].

1.2. Notation syntaxique (Syntax Notation)

Cette spécification utilise la notation de forme de Backus-Naur augmentée (ABNF) de [RFC5234], étendue avec la notation de sensibilité à la casse des chaînes définie dans [RFC7405].

Elle utilise également une extension de liste, définie dans la section 5.6.1 de [HTTP], qui permet une définition compacte de listes séparées par des virgules en utilisant un opérateur "#" (similaire à la façon dont l'opérateur "*" indique la répétition). L'annexe A montre la grammaire complète avec tous les opérateurs de liste développés en notation ABNF standard.

Par convention, les noms de règles ABNF préfixés par "obs-" désignent des règles de grammaire obsolètes qui apparaissent pour des raisons historiques.

Les règles de base suivantes sont incluses par référence, telles que définies dans [RFC5234], Annexe B.1 : ALPHA (lettres), CR (retour chariot), CRLF (CR LF), CTL (caractères de contrôle), DIGIT (décimal 0-9), DQUOTE (guillemet double), HEXDIG (hexadécimal 0-9/A-F/a-f), HTAB (tabulation horizontale), LF (saut de ligne), OCTET (toute séquence de données de 8 bits), SP (espace) et VCHAR (tout caractère visible [USASCII]).

Les règles suivantes sont définies dans [HTTP] :

BWS           = <BWS, voir [HTTP], Section 5.6.3>
OWS = <OWS, voir [HTTP], Section 5.6.3>
RWS = <RWS, voir [HTTP], Section 5.6.3>
absolute-path = <absolute-path, voir [HTTP], Section 4.1>
field-name = <field-name, voir [HTTP], Section 5.1>
field-value = <field-value, voir [HTTP], Section 5.5>
obs-text = <obs-text, voir [HTTP], Section 5.6.4>
quoted-string = <quoted-string, voir [HTTP], Section 5.6.4>
token = <token, voir [HTTP], Section 5.6.2>
transfer-coding =
<transfer-coding, voir [HTTP], Section 10.1.4>

Les règles suivantes sont définies dans [URI] :

absolute-URI  = <absolute-URI, voir [URI], Section 4.3>
authority = <authority, voir [URI], Section 3.2>
uri-host = <host, voir [URI], Section 3.2.2>
port = <port, voir [URI], Section 3.2.3>
query = <query, voir [URI], Section 3.4>