HTTP : HyperText Transfert Protocol
Objectif
Se familiariser avec HTTP.
Mise en situation
HTTP est le protocole du Web : il permet à un client (le navigateur) d'obtenir des pages et des ressources depuis un serveur web (le site).
On connaît ce protocole car les adresses web commencent par http://
.
Par exemple, http://en.wikipedia.org/wiki/Tim_Berners-Lee
signifie : je souhaite communiquer avec le serveur en.wikipedia.org
en utilisant le protocole HTTP
, je lui demande de me donner la page qui s'appelle Tim_Berners-Lee
. On appelle cela une requête HTTP.
Rappel : Une courte histoire du Web
HTTP est conçu au début des années 90 par Tim Berners-Lee dans le cadre de ses travaux au CERN. L'objectif est de mettre en place un système qui permette l'échange d'informations et de ressources, entre les chercheurs du CERN, en s'appuyant sur le réseau interne. Le projet prend rapidement le nom de World Wide Web et abouti à la création du protocole HTTP et du premier navigateur.
Définition : HTTP
HTTP (pour HyperText Transfert Protocol) est le protocole utilisé par le Web pour le transfert de ressources.
Ce protocole fonctionne sous la forme de requête-réponse dans une architecture client-serveur : le client adresse une requête HTTP à un serveur qui lui enverra une réponse appropriée.
Ce protocole repose généralement sur un protocole de transport fiable, tel que TCP.
Fondamental : Port 80
Le port 80 est le port réservé par les serveurs Web pour HTTP.
Les requêtes HTTP
Il existe différent types de requêtes HTTP, voici les plus importantes :
GET
: c'est la plus commune et elle demande à recevoir une certaine ressource disponible sur un serveur web. Quand un client fait une requêteGET
, c'est qu'il veut uniquement recevoir une ressource et qu'il ne cherche pas à la modifier.POST
: une requêtePOST
est utilisée dans l'intention de modifier ou ajouter une ressource sur le serveur web.DELETE
: elle est utilisée par le client lorsqu'il veut supprimer une ressource d'un serveur web.
Format des requêtes
Les requêtes HTTP suivent le format suivant :
le type de la requête (
GET
,POST
, etc.) avec la référence de la ressource en question sur le serveur,des en-têtes donnant diverses informations au serveur,
un corps optionnel contenant des données utiles à la requête ; dans le cas de l'ajout d'une ressource, le corps contiendra la ressource en elle-même.
Exemple : Un message HTTP
GET /wiki/Hypertext_Transfer_Protocol HTTP/1.1
Host: www.wikipedia.org
On demande à recevoir (GET) la ressource /wiki/Hypertext_Tansfert_Protocol se trouvant sur le serveur www.wikipedia.org.
La directive Host:
est une en-tête.
Méthode : Réaliser une requête GET
Les navigateurs web exécute une requête GET à chaque fois qu'un utilisateur demande à consulter une page web.
Il existe des programmes tels que
wget
oucurl
pour effectuer des requêtes HTTP en ligne de commande.
curl https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol
wget https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol
Cette commande enregistre le contenu de la page Hypertext_Transfer_Protocol
de Wikipédia. Contrairement à un navigateur web, la page n'est pas affichée ni mise en page.
Les en-têtes HTTP
Les en-têtes (ou headers) HTTP permettent d'ajouter de nombreuses informations aux requêtes, ce qui facile l'ajout de fonctionnalités au protocole : gestion du cache, de l'authentification, des formats de données à échanger, etc.
Exemple :
Nous avons vu plus haut une requête utilisant le header Host
. Un autre très utilisé est le header Authorization
qui est utilisé pour gérer l'accès avec des identifiants à une ressource. Sans rentrer dans le détail, voici un exemple :
GET /internal/secret_file.txt HTTP/1.1
Authorization: Basic a3lhbmU6
Ici on demande l'accès à la ressource /internal/secret_file.txt en utilisant de l'authentification. L'en-tête Authorization
permet de spécifier que l'on utilisera la méthode d'authentification "Basic" (il en existe plusieurs) et on passe comme valeur d'identifiant "a3lhbmU6".
Fondamental : Récapitulatif
À retenir
HTTP est le protocole du Web qui permet d'échanger des ressources, le plus souvent des fichiers HTML.
Il permet de faire des requêtes pour demander à consulter, ajouter, modifier ou supprimer une ressource sur un serveur web.