HTTP - Kasimashi/Systemes-embarques GitHub Wiki

Le Protocole HTTP

Introduction

Le protocole HTTP (HyperText Transfer Protocol) est le protocole le plus utilisé sur Internet depuis 1990. La version 0.9 était uniquement destinée à transférer des données sur Internet (en particulier des pages Web écrites en HTML. La version 1.0 du protocole (la plus utilisée) permet désormais de transférer des messages avec des en-têtes décrivant le contenu du message en utilisant un codage de type MIME.

Le but du protocole HTTP est de permettre un transfert de fichiers (essentiellement au format HTML) localisés grâce à une chaîne de caractères appelée URL entre un navigateur (le client) et un serveur Web (appelé d'ailleurs httpd sur les machines UNIX).

Communication entre navigateur et serveur

La communication entre le navigateur et le serveur se fait en deux temps : image

Le navigateur effectue une requête HTTP Le serveur traite la requête puis envoie une réponse HTTP En réalité la communication s'effectue en plus de temps si on considère le traitement de la requête par le serveur. Etant donné que l'on s'intéresse uniquement au protocole HTTP, le traitement du côté serveur ne sera pas explicité dans le cadre de cet article... (Cf Traitement des CGI.)

Requête HTTP

Une requête HTTP est un ensemble de lignes envoyé au serveur par le navigateur. Elle comprend :

  • Une ligne de requête: c'est une ligne précisant le type de document demandé, la méthode qui doit être appliquée, et la version du protocole utilisée. La ligne comprend trois éléments devant être séparés par un espace :
    • La méthode
    • L'URL
    • La version du protocole utilisé par le client (généralement HTTP/1.0)
  • Les champs d'en-tête de la requête: il s'agit d'un ensemble de lignes facultatives permettant de donner des informations supplémentaires sur la requête et/ou le client (Navigateur, système d'exploitation, ...). Chacune de ces lignes est composée d'un nom qualifiant le type d'en-tête, suivi de deux points (:) et de la valeur de l'en-tête
  • Le corps de la requête: c'est un ensemble de lignes optionnelles devant être séparées des lignes précédentes par une ligne vide et permettant par exemple un envoi de données par une commande POST lors de l'envoi de données au serveur par un formulaire Une requête HTTP a donc la syntaxe suivante :
METHODE URL VERSION
EN-TETE : Valeur
.
.
.
EN-TETE : Valeur
Ligne vide
CORPS DE LA REQUETE

Voici donc un exemple de requête HTTP :

GET http://www.commentcamarche.net HTTP/1.0
Accept : text/html
If-Modified-Since : Saturday, 15-January-2000 14:37:11 GMT
User-Agent : Mozilla/4.0 (compatible; MSIE 5.0; Windows 95)

Les commandes HTTP

Commande Description
GET Requête de la ressource située à l'URL spécifiée
HEAD Requête de l'en-tête de la ressource située à l'URL spécifiée
POST Envoi de données au programme situé à l'URL spécifiée
PUT Envoi de données à l'URL spécifiée
DELETE Suppression de la ressource située à l'URL spécifiée

En-têtes

Accept Type de contenu accepté par le browser (par exemple text/html). Voir types MIME
Accept-Charset Jeu de caractères attendu par le browser
Accept-Encoding Codage de données accepté par le browser
Accept-Language Langage attendu par le browser (anglais par défaut)
Authorization Identification du browser auprès du serveur
Content-Encoding Type de codage du corps de la requête
Content-Language Type de langage du corps de la requête
Content-Length Longueur du corps de la requête
Content-Type Type de contenu du corps de la requête (par exemple text/html). Voir types MIME
Date Date de début de transfert des données
Forwarded Utilisé par les machines intermédiaires entre le browser et le serveur
From Permet de spécifier l'adresse e-mail du client
From Permet de spécifier que le document doit être envoyé s'il a été modifié depuis une certaine date
Link Relation entre deux URL
Orig-URL URL d'origine de la requête
Referer URL du lien à partir duquel la requête a été effectuée
User-Agent Chaîne donnant des informations sur le client, comme le nom et la version du navigateur, du système d'exploitation

Réponse HTTP

Une réponse HTTP est un ensemble de lignes envoyées au navigateur par le serveur. Elle comprend :

  • Une ligne de statut: c'est une ligne précisant la version du protocole utilisé et l'état du traitement de la requête à l'aide d'un code et d'un texte explicatif. La ligne comprend trois éléments devant être séparés par un espace :
    • La version du protocole utilisé
    • Le code de statut
    • La signification du code
  • Les champs d'en-tête de la réponse: il s'agit d'un ensemble de lignes facultatives permettant de donner des informations supplémentaires sur la réponse et/ou le serveur. Chacune de ces lignes est composée d'un nom qualifiant le type d'en-tête, suivi de deux points (:) et de la valeur de l'en-tête
  • Le corps de la réponse: il contient le document demandé

Une réponse HTTP a donc la syntaxe suivante :

VERSION-HTTP CODE EXPLICATION
EN-TETE : Valeur
.
.
.
EN-TETE : Valeur
Ligne vide
CORPS DE LA REPONSE
⚠️ **GitHub.com Fallback** ⚠️