logo rodolphe bertozzo

Qu’est ce que le protocole HTTP ?

Qu'est ce que le protocole HTTP

Le protocole HTTP, (Hypertext Transfer Protocol), est un protocole de communication utilisé sur Internet pour transférer des données entre un client (généralement un navigateur web) et un serveur web. Il a été conçu par Tim Berners Lee dans les années 1990 lorsqu’il travaillait au CERN. A ce moment, Tim Berners Lee travaillait également sur le langage HTML pour permettre la création de documents hypertextes. Ce protocole a connu plusieurs évolutions.

Comment fonctionne le protocole HTTP ?

Le protocole HTTP fonctionne en utilisant des en-têtes qui décrivent les métadonnées d’un message HTTP échangé entre un client et un serveur. Ces en têtes sont basés sur un codage de type MIME (Multipurpose Internet Mail Extensions). Bien que le format principal des données transférées soit généralement du HTML, HTTP peut être utilisé pour transmettre divers types de médias, tels que des images, des vidéos, et même des données envoyées depuis des formulaires web.

Lorsqu’un utilisateur effectue une action, comme la saisie d’une URL dans la barre d’adresse ou le clic sur un lien, cette action est convertie en une requête HTTP envoyée au serveur. Le serveur renvoie au client une réponse HTTP. Ces requêtes et réponses fournissent des instructions pour initier, développer et finaliser la transmission d’informations, mais aussi déclencher l’exécution de ressources spécifiques stockées sur le serveur. C’est ce que l’on appelle le schéma “requête-réponse”.

Un aspect important du protocole HTTP est son caractère « sans état ». Cela signifie que chaque requête est traitée de manière indépendante, sans que le serveur ne conserve d’informations sur les connexions précédentes de l’utilisateur. Cependant, dans le développement d’applications web, il est souvent nécessaire de maintenir un certain état, par exemple pour suivre l’activité de l’utilisateur ou pour conserver des informations entre différentes requêtes. Pour cela, les applications web utilisent des cookies, qui sont des données stockées sur le système de l’utilisateur. Ces cookies permettent aux serveurs de suivre les utilisateurs et de maintenir un état entre les différentes interactions en ligne, car ils peuvent être conservés sur le client pendant une période définie.

Evolution du protocole HTTP

Il n’y avait initialement aucune numérotation de version définie pour la première version du protocole HTTP, bien que cette version soit nommée aujourd’hui 0.9. La première version est aussi nommée « protocole une ligne », car elle permettait de solliciter une page HTML à travers une requête en une ligne, à l’aide de la commande GET.

En 1996, HTTP/1.0 voit son apparition lorsque l’Internet Engineering Task Force publia la première RFC officielle décrivant le protocole HTTP : RFC 1945. La notion d’entête HTTP a été introduite pour les requêtes et les réponses, permettant ainsi la transmission de métadonnées. Grâce à ces en-têtes HTTP améliorés, il est possible de transférer des types de données autres que des fichiers HTML, en utilisant notamment l’en-tête Content-Type. Chaque échange d’objet entre un client et un serveur nécessite la création d’une nouvelle connexion TCP, HTTP/1.0 est donc un stateless protocole.

Ensuite, en 1997 HTTP/1.1 a vu le jour avec diverses améliorations comme la mise en place de mécanismes de mise en cache, mais aussi le maintient des connexions actives au-delà d’une unique requête, à l’aide d’un signal keepalive. Grâce à ce mécanisme, la même connexion est réutilisée pour plusieurs requêtes.

Enfin, en 2015 le protocole HTTP/2 a été introduit par Google et porte le nom de SPDY. Il est aujourd’hui largement adopté sur la plupart des sites Internet. Cette nouvelle version se concentre essentiellement sur l’amélioration des performances, en compressant notamment les entêtes. Le multiplexage aide à ce que toutes les ressources nécessaires à l’affichage d’une page sont téléchargées en une seule requête.

Qu’est ce qu’une requête HTTP ?

Une requête HTTP est une instruction sur plusieurs lignes envoyée d’un client vers un serveur web. Elle comprend :

  • Une méthode : la première ligne de la requête indique la méthode HTTP mobilisée pour la requête. Mais aussi le chemin d’accès simplifié de l’URL de la ressource qui va être récupérée dans le navigateur par le serveur (« / »), et la version du protocole HTTP.
  • Un en tête (facultatif) : donne au serveur des informations supplémentaires, de type Host, User-Agent, Cookies, Connection, Navigateur, système d’exploitation…).
  • Le corps de la requête: certaines méthodes de requêtes (POST) demandent au navigateur d’envoyer des données au serveur dans le corps de la requête (envoi de formulaire au serveur par exemple).
GET /index.html HTTP/1.1

Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
Connection: keep-alive

Corps de la requête (vide dans le cas d'une requête GET)

Qu’est ce qu’une réponse HTTP ?

La composition d’une réponse HTTP est sensiblement la même qu’une requête, on a sur la première ligne la version du protocole HTTP et le code de réponse. Un en tête qui contient des informations (date d’envoi de la réponse, informations sur le serveur, sur la connexion, mise en place des cookies…). Certaines réponses contiennent aussi un corps qui va permettre de transmettre la ressource demandée par la requête.

HTTP/1.1 200 OK

Date: Tue, 11 Oct 2023 10:00:00 GMT
Server: Apache/2.4.41
Content-Type: text/html
Content-Length: 1234

Corps de la réponse (contenu de la page web)

Les méthodes HTTP

HTTP fonctionne avec des méthodes de requête pour préciser l’action que l’on veut réaliser sur la ressource au moment où un client lace une requête au serveur. La liste des requêtes :

  • GET : Cette méthode permet de demander une ressource au serveur web. Le contenu est directement visible dans le navigateur.
  • HEAD : sensiblement identique à GET, à la différence qu’il n’y aura pas de corps de réponse, mais uniquement l’en-tête. Cette méthode est utile pour demander des informations sur la ressource, on obtient par la suite l’en tête de réponse, sans la ressource en elle même.
  • POST : envoie une ressource vers le serveur, dans le cas où l’on complète un formulaire par exemple. Les données saisies ne sont pas visibles dans l’URL, mais sont encapsulées directement dans la requête. Il n’y a pas de limite de taille non plus (charger une image).
  • PUT : remplace toutes les représentations actuelles de la ressource visée par le contenu de la requête, c’est à dire qu’au lieu de soumettre des données, on met à jour des informations déjà existantes.

Il existe d’autres types de méthodes, mais peu couramment utilisées :

  • DELETE : supprime la ressource indiquée.
  • CONNECT : établit un tunnel vers le serveur identifié par la ressource cible.
  • OPTIONS : utilisée pour décrire les options de communications avec la ressource visée.
  • TRACE : réalise un message de test aller/retour en suivant le chemin de la ressource visée.
  • PATCH : utilisée pour appliquer des modifications partielles à une ressource.

La sécurité

Le protocole HTTPS est une extension sécurisée du protocole HTTP qui crypte les informations transmises du client vers le serveur, elles ne peuvent donc pas être espionnées ou modifiées. Sur près de 3 sites sur 4, la version du protocole HTTP est la version sécurisée. Cette version se base sur les protocoles TLS pour chiffrer les échanges entre le client et le serveur. Pour cela, il n’y a qu’à installer un certificat SSL sur le nom de domaine.

Version sécurisée du protocole HTTP - Certificat SSL
Version sécurisée du protocole HTTP – Certificat SSL

Les codes de réponse HTTP

Les codes de réponse HTTP sont des codes numériques envoyés par un serveur Web en réponse à une requête effectuée par un utilisateur depuis un navigateur Web ou un autre client. Ces codes concernent les réponses serveur, les redirections… Ils sont conçus pour indiquer le statut de la réponse à la requête. Ces codes permettent de diagnostiquer les problèmes éventuels lors de l’interaction entre les clients (navigateurs, applications) et les serveurs Web. Tous les codes de réponse ne sont pas nécessairement visibles par l’utilisateur à travers le navigateur ou l’application. Certains codes sont visibles depuis un client FTP lorsqu’il y a une erreur ou un succès de connexion au serveur, d’autres depuis le navigateur lorsque l’accès à un répertoire sensible est protégé ou qu’une ressource est introuvable. Ces codes permettent de solutionner rapidement certains problèmes d’accès et être en mesure de comprendre la présence de redirections. Voici une liste non exhaustive des codes de réponses les plus communs :

1xx – Réponses d’information

Pour ce type de code, il n’y en a qu’un :

  • 100 Continue : le serveur a reçu les en-têtes de la demande et est en attente de l’envoi du corps de la demande par le client.

2xx – Réponses de succès

  • 200 OK : La requête a été traitée avec succès et une réponse est renvoyée. La page doit être actualisée depuis sa mise à jour.
  • 201 Created : Une nouvelle ressource a été créée en réponse à la demande.
  • 204 No Content : La requête a été traitée avec succès, mais il n’y a pas de contenu à renvoyer, autrement dit, le client n’a pas besoin d’actualiser la page. La page est mise à jour en direct, c’est le cas d’un enregistrement automatique.

3xx – Réponses de redirection

Ces codes de réponse sont relatifs aux redirections effectuées d’une adresse URL à une autre, en règle générale, ils sont gérés coté serveur directement ou coté CMS si ce dernier le permet. Ces directives de redirection sont ensuite transmises au fichier de configuration du répertoire du site. Il existe deux types de redirection (temporaire ou permanente) :

  • 302 Found Temporary Redirect : la ressource demandée a été temporairement déplacée vers un nouvel emplacement.
  • 301 Moved Permanently : la ressource demandée a été déplacée de manière permanente vers un nouvel emplacement.

4xx – Erreurs côté client

  • 400 Bad Request : La requête du client est malformée ou invalide.
erreur 400 bad request
Code d’erreur 400 – Bad Request
  • 401 Unauthorized : L’accès à la ressource nécessite une authentification et est interdite d’accès en l’état par le client, et nécessite une authentification. Il peut s’agir d’un répertoire sensible.
  • 404 Not Found : La ressource demandée n’a pas été trouvée. Ce sont les fameuses erreurs 404, page introuvable.
erreur 404 ressource non trouvée
Erreur 404 – Ressource non trouvée
  • 408 Request Timeout : le serveur met fin à la connexion parce qu’il n’a pas reçu de réponse de la suite d’une requête utilisateur dans les temps. Le serveur attendait une nouvelle donnée/requête de la part du client, chose qui ne s’est pas réalisée dans un laps de temps imparti.

5xx – Erreurs côté serveur

  • 500 Internal Server Error : Une erreur interne du serveur s’est produite.
erreur 500 serveur
Erreur 500 – serveur
  • 502 Bad Gateway : Le serveur agit comme une passerelle ou un proxy et a reçu une réponse non valide ou incorrecte d’un autre serveur en amont auquel il a tenté de se connecter pour obtenir une réponse à une requête envoyée.
  • 503 Service Unavailable : Le serveur n’est pas en mesure de gérer la demande en raison d’une surcharge temporaire ou de la maintenance de ce dernier. Lorsque les moteurs de recherche rencontrent un code 503, ils comprennent que le site est temporairement indisponible.

Vous avez apprécié cet article ?

En savoir plus sur l'auteur...

Rodolphe BERTOZZO

Etudiant freelance concepteur web