Je suis Charlie

Autres trucs

Accueil

Seulement les RFC

Seulement les fiches de lecture

Mon livre « Cyberstructure »

Ève

La norme HTTP 1.1, nouvelle rédaction

Première rédaction de cet article le 14 juin 2014
Dernière mise à jour le 17 juin 2014


La norme HTTP est actuellement en version 1.1. Cette version était normalisée dans le RFC 2616, un document unique couvrant tous les aspects de HTTP. Ce protocole étant largement utilisé, dans des contextes très différents, des problèmes, voire des bogues dans la spécification sont apparus. Son côté monolithique rendait difficile une évolution. HTTP 1.1 est donc désormais normalisé dans huit RFC différents qui, tous ensemble, remplacent le RFC 2616. (Ils ont depuis été à leur tour remplacés par la série qui comprend notamment les RFC 9110 et RFC 9112.)

Cela a été une des deux tâches du groupe de travail httpbis de l'IETF, l'autre étant de développer la version 2 de HTTP (publiée depuis, dans le RFC 7540).

HTTP a eu plusieurs versions. La première, souvent nommée (après coup) 0.9, n'a pas fait l'objet d'une normalisation formelle. Le premier RFC spécifiant HTTP a été le RFC 1945 en 1996, remplacé ensuite par le RFC 2068 (qui a introduit la version 1.1) puis le RFC 2616. Le RFC 2145 décrit les versions de HTTP et comment les interpréter. À noter que cette dernière révision modifie aussi les RFC 2817 et RFC 2818 sur HTTPS.

La liste des questions ouvertes par le processus de révision était longue : voici celle maintenue par le W3C et celle de l'IETF. Le grand débat était le classique « Faut-il écrire un document en partant de zéro ou bien se contenter de corriger les erreurs les plus évidentes du RFC ? » et le choix a été de refaire les documents mais de garder le protocole.

La liste complète des RFC décrivant HTTP 1.1 est désormais :

  • RFC 7230, qui décrit l'architecture, les URI, et la syntaxe des messages,
  • RFC 7231, qui décrit la sémantique des messages, les codes de retour à trois chiffres, les en-têtes des requêtes et des réponses,
  • RFC 7232, sur les requêtes conditionnelles,
  • RFC 7233, normalise les requêtes demandant une portion d'un contenu, en spécifiant un intervalle,
  • RFC 7234, décrit le fonctionnement des caches Web,
  • RFC 7235, spécifie les mécanismes d'authentification de HTTP,
  • RFC 7236, enregistre les anciens mécanismes d'authentification, qui avaient été spécifiés avant le RFC 7235,
  • RFC 7237, enregistre les anciennes méthodes HTTP, pour initialiser le registre.

La sortie de cette nouvelle norme a aussi permis la publication d'extensions à HTTP qui en dépendaient, comme le code de retour 308 dans le RFC 7238, comme l'en-tête Forwarded: dans le RFC 7239 ou encore comme l'en-tête Prefer: du RFC 7240.

Les changements ? Le protocole ne change pas, c'est toujours HTTP 1.1. Les changements sont de forme, de précision, de correction de bogues dans la spécification. Parmi les changements transversaux, qui affectent l'ensemble des huit RFC, le passage à l'ABNF standard du RFC 5234, au lieu d'un langage de description de grammaire spécifique à HTTP. La révision de HTTP a été un énorme travail, vu la nécessité de rester compatible avec le comportement de tous les logiciels existants, tout en étant plus rigoureux.

Un bon article résumant le projet est celui de Mark Nottingham, un des présidents du groupe de travail httpbis. (Il y a aussi celui d'Evert Pot.)

Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)

Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)