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.

RappelUne 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éfinitionHTTP

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.

FondamentalPort 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ête GET, c'est qu'il veut uniquement recevoir une ressource et qu'il ne cherche pas à la modifier.

  • POST: une requête POST 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.

ExempleUn message HTTP

1
GET /wiki/Hypertext_Transfer_Protocol HTTP/1.1
2
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éthodeRé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 ou curl pour effectuer des requêtes HTTP en ligne de commande.

1
curl https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol
1
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 :

1
GET /internal/secret_file.txt HTTP/1.1
2
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".

FondamentalRécapitulatif

Contenu d'une requête HTTP et de sa réponseInformations[1]

À 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.