Aller au contenu principal

Appendix A. HTTP Version History (Historique des Versions HTTP)

La politique de versionnage HTTP n'a pas changé depuis qu'elle a été introduite pour la première fois en 1990 dans le cadre de l'initiative d'information globale World-Wide Web. Cette politique de version vise à permettre à l'expéditeur d'indiquer le format d'un message et sa capacité à comprendre et participer à des communications ultérieures.

Le développement de HTTP/1.1 a pris plus de 10 ans, incluant deux spécifications différentes sur la voie de normalisation ([RFC2068] et [RFC2616]), ainsi que des décennies d'expérience en matière d'implémentation et de déploiement.

A.1. HTTP/0.9

HTTP/0.9 était la première implémentation du protocole HTTP sur le World-Wide Web. C'était un protocole simple où une requête consistait en une seule ligne contenant uniquement la méthode et l'URI cible.

GET /hello.txt

A.1.1. HTTP/1.0

HTTP/1.0 a documenté le format de message HTTP commun. Il a ajouté un numéro de version de protocole, un code de statut, et une section d'en-têtes pour les requêtes et les réponses.

La spécification HTTP/1.0 est définie dans [RFC1945].

A.1.2. HTTP/1.1

HTTP/1.1 est un raffinement de HTTP/1.0, comprenant des descriptions détaillées des méthodes de requête, des codes de statut de réponse et des champs d'en-tête.

Les principales améliorations incluent:

  • Connexions persistantes: Les connexions sont persistantes par défaut
  • Codage de transfert par chunks: Permet l'envoi dynamique du corps du message
  • En-tête Host: Support de l'hébergement virtuel
  • Pipeline: Permet l'envoi de plusieurs requêtes en parallèle
  • Contrôle du cache: Mécanismes de mise en cache plus sophistiqués

HTTP/1.1 a été défini pour la première fois dans [RFC2068] (janvier 1997), puis mis à jour dans [RFC2616] (juin 1999).

A.2. Changes from RFC 2616 (Changements par rapport à RFC 2616)

Ce document ([RFC7230]) remplace le précédent [RFC2616] et introduit de nombreuses clarifications et améliorations:

A.2.1. Architecture (Architecture)

  • Clarification des rôles des intermédiaires (proxys, passerelles, tunnels)
  • Amélioration des définitions des agents utilisateurs et des serveurs d'origine

A.2.2. Message Syntax and Routing (Syntaxe et Routage des Messages)

  • Clarification du tramage des messages
  • Clarification de l'interaction entre Transfer-Encoding et Content-Length
  • Description détaillée du codage de transfert par chunks

A.2.3. Connection Management (Gestion des Connexions)

  • Clarification du comportement des connexions persistantes
  • Documentation des limitations du pipeline
  • Description détaillée de la réutilisation et de la fermeture des connexions

A.2.4. Security Considerations (Considérations de Sécurité)

  • Documentation des attaques de contrebande de requêtes
  • Documentation des attaques de division de réponse
  • Ajout de conseils de sécurité concernant la longueur des éléments de protocole