Historique
HTTP a été inventé par Tim Berners-Lee avec les adresses Web et le langage HTML pour créer le World Wide Web. À cette époque le File Transfer Protocol (FTP) était déjà disponible pour transférer des fichiers, mais il ne supportait pas la notion de format de données telle qu'introduite par Multipurpose Internet Mail Extensions (MIME). La première version de HTTP était très basique, mais prévoyait déjà le support d'entêtes MIME pour décrire les données transmises. Cette première version reste encore partiellement utilisable en 2007, connue sous le nom de HTTP/0.9.
En mai 1996, HTTP/1.0 devient finalement standard de l'IETF et est décrit dans la RFC 1945. Cette version supporte les serveurs HTTP virtuels, la gestion de cache et l'identification.
En janvier 1997 HTTP/1.1 est décrit dans la RFC 2068 de l'IETF, puis dans la RFC 2616 en juin 1999. Cette version ajoute le support du transfert en pipeline et la négociation de type de contenu (format de données, langue).
Du client au serveur
La liaison entre le client et le serveur n'est pas toujours directe, il peut exister des machines intermédiaires servant de relais :
- Un serveur mandataire (ou proxy) peut modifier les réponses et requêtes qu'il reçoit et peut gérer un cache des ressources demandées.
- Une passerelle (ou gateway) est un intermédiaire modifiant le protocole utilisé.
- Un tunnel transmet les requêtes et les réponses sans aucune modification, ni mise en cache.
Méthodes
Dans le protocole HTTP, une méthode est une Commande spécifiant un type de requête, c'est-à-dire qu'elle demande au serveur d'effectuer une action. En général l'action concerne une ressource identifiée par l'URL qui suit le nom de la méthode.
GET - C'est la méthode la plus courante pour demander une ressource. Une requête GET est sans effet sur la ressource, il doit être possible de répéter la requête sans effet.
HEAD - Cette méthode ne demande que des informations sur la ressource, sans demander la ressource elle-même.
POST - Cette méthode doit être utilisée pour ajouter une nouvelle ressource (un message sur un forum ou un article dans un site). L'URI fournie est l'URI d'une ressource liée à la nouvelle ressource (comme l'URI du forum ou site) et non l'URI de la ressource nouvellement crée.
OPTIONS - Cette méthode permet d'obtenir les options de communication d'une ressource ou du serveur en général.
CONNECT - Cette méthode permet d'utiliser un proxy comme un tunnel de communication.
TRACE - Cette méthode demande au serveur de retourner ce qu'il a reçu, dans le but de tester et effectuer un diagnostic sur la connexion.
PUT - Cette méthode permet de remplacer ou d'ajouter une ressource sur le serveur. L'URI fourni est celui de la ressource en question.
DELETE - Cette méthode permet de supprimer une ressource du serveur.
Ces 2 dernières méthodes nécessitent généralement un accès privilégié.
Certains serveurs autorisent d'autres méthodes de gestion des ressources du serveur (par exemple WebDAV).
Identification
HTTP permet l'identification du visiteur par transmission d'un nom et d'un mot de passe. Il existe 2 modes d'identification : Basic et Digest (RFC 2617). Le premier mode transmet le mot de passe en clair, et ne doit donc être utilisé qu'avec le protocole HTTPS. Le deuxième mode permet une identification sans transmettre le mot de passe en clair. L'identification est cependant souvent effectuée par une couche applicative supérieure à HTTP.