Protocole HTTP

Numérique et sciences informatiques

ihm

Introduction

Revenons sur l'adresse qui s'affiche dans la barre d'adresse d'un navigateur web et plus précisément sur le début de cette adresse c'est-à-dire le "http" ou "https"

Un protocole est ensemble de règles qui permettent à 2 ordinateurs de communiquer ensemble.

Le protocole HTTP (HyperText Transfer Protocol) est le protocole le plus utilisé sur Internet depuis 1990. 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

  • Le navigateur effectue une requête HTTP
  • Le serveur traite la requête puis envoie une réponse HTTP

requetes_http
Requêtes HTTP

Voici une version simplifiée de la composition d'une requête HTTP (client vers serveur) :

  • la méthode employée pour effectuer la requête
  • l'URL de la ressource
  • la version du protocole utilisé par le client (souvent HTTP 1.1)
  • le navigateur employé (Firefox, Chrome) et sa version
  • le type du document demandé (par exemple HTML)
  • ...

Certaines de ces lignes sont optionnelles. Vous pouvez visualiser vos entêtes en utilisant la touche F12 dans votre navigateur onglet "Headers".

internet
Structure d'une requête

Un autre exemple de requête HTTP :

GET /mondossier/monFichier.html HTTP/1.1
User-Agent : Mozilla/5.0
Accept : text/html

Nous avons ici plusieurs informations :

  • "GET" est la méthode employée (voir ci-dessous)
  • "/mondossier/monFichier.html" correspond l'URL de la ressource demandée
  • "HTTP/1.1" : la version du protocole est la 1.1
  • "Mozilla/5.0" : le navigateur web employé est Firefox de la société Mozilla
  • "text/html" : le client s'attend à recevoir du HTML

Revenons sur la méthode employée :

Une requête HTTP  utilise une méthode (c'est une commande qui demande au serveur d'effectuer une certaine action).
Voici la liste des méthodes disponibles : GET, HEAD, POST, OPTIONS, CONNECT, TRACE, PUT, PATCH, DELETE

Détaillons 4 de ces méthodes :

Commandes Particularités
GET C'est la méthode la plus courante pour demander une ressource. Elle est sans effet sur la ressource.
POST Cette méthode est utilisée pour soumettre des données en vue d'un traitement (côté serveur). Typiquement c'est la méthode employée lorsque l'on envoie au serveur les données issues d'un formulaire.
DELETE Cette méthode permet de supprimer une ressource sur le serveur.
PUT Cette méthode permet de modifier une ressource sur le serveur

Réponse du serveur à une requête HTTP

Une fois la requête reçue, le serveur va renvoyer une réponse, voici un exemple de réponse du serveur :

HTTP/1.1 200 OK
Date: Thu, 15 feb 2019 12:02:32 GMT
Server: Apache/2.0.54 (Debian GNU/Linux) DAV/2 SVN/1.1.4
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=ISO-8859-1
<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>Voici mon site</title>
</head>
<body>
 <h1>Hello World! Ceci est un titre</h1>
<p>Ceci est un <strong>paragraphe</strong>. Avez-vous bien compris ?</p>
</body>
</html>

Nous n'allons pas détailler cette réponse, voici quelques explications sur les éléments qui nous seront indispensables par la suite :

Commençons par la fin : le serveur renvoie du code HTML, une fois ce code reçu par le client, il est interprété par le navigateur qui affiche le résultat à l'écran. Cette partie correspond au corps de la réponse.

La 1re ligne se nomme la ligne de statut :

  • HTTP/1.1 : version de HTTP utilisé par le serveur
  • 200 : code indiquant que le document recherché par le client a bien été trouvé par le serveur. Il existe d'autres codes dont un que vous connaissez peut-être déjà : le code 404 (qui signifie  «Le document recherché n'a pu être trouvé»).

Une ligne nous intéresse plus particulièrement:

Server: Apache/2.0.54 (Debian GNU/Linux) DAV/2 SVN/1.1.4

Le serveur web utilisé dans la réponse HTTP ci-dessus est basé sur une distribution GNU/Linux appelée "Debian". Le cœur de ce serveur web est le logiciel "Apache" , qui est responsable de la gestion des requêtes HTTP. Apache reçoit les requêtes provenant des clients et renvoie les réponses HTTP correspondantes. Bien qu'il existe d'autres logiciels tels que nginx et lighttpd capables de gérer les requêtes HTTP, Apache reste le plus populaire et est installé sur environ la moitié des serveurs web mondiaux.

Liste des codes HTTP

Même en tant que simple internaute, on peut être confronté à des codes de réponse HTTP (par exemple quand on tape une URL incorrecte).

  • Informational 1XX : Ces codes ne sont pas utilisés dans la version 1.0 du protocole
  • Successful 2XX : Ces codes indiquent le bon déroulement de la transaction
  • Redirection 3XX : Ces codes indiquent que la ressource n'est plus à l'emplacement indiqué
  • Client Error 4XX : Ces codes indiquent que la requête est incorrecte
  • Server Error 5XX : Ces codes indiquent qu'il y a eu une erreur interne du serveur

internet
Selon la légende, 404 serait le numéro d'un bureau du CERN en Suisse dans lequel se trouvait un serveur défaillant.

Requête HTTPS

Le protocole HTTPS (HyperText Transfer Protocol Secure) est utilisé pour sécuriser les échanges de données sur Internet, en particulier lors de l'accès à des sites Web nécessitant une connexion sécurisée, tels que les sites de banque en ligne ou de commerce électronique.

Le fonctionnement de HTTPS repose sur l'utilisation de certificats numériques, qui permettent d'authentifier les serveurs web que vous visitez et de garantir la transmission sécurisée de vos données. Ces certificats sont délivrés par des autorités de certification reconnues, qui vérifient l'identité du propriétaire du site et la validité du certificat.

Lorsque vous accédez à un site web en HTTPS, votre navigateur et le serveur web établissent une connexion sécurisée en utilisant un chiffrement, transformant vos données en un format illisible pour toute personne tentant de les intercepter. Cela assure que vos informations sensibles, telles que vos identifiants de connexion ou les détails de votre carte de crédit, ne peuvent être ni interceptées ni lues par des tiers.

D'un point de vue strictement pratique, il est essentiel de vérifier que le protocole utilisé est bien HTTPS (l'adresse commence par "https") avant de transmettre des données sensibles, comme les coordonnées bancaires. Si ce n'est pas le cas, il est préférable de ne pas continuer, car toute personne qui intercepte les paquets de données serait en mesure de lire vos informations sensibles.