IT & Engineering
Cours intensif sur HTTP
Cela fait un moment que nous ne nous sommes pas penchés sur un processus technique plus fondamental, et bien que le monde de l’email soit en constante évolution, il est agréable de prendre du recul et d’examiner comment les choses fonctionnent. Comme l’indique le titre, nous voulions revoir le protocole HTTP : ce que c’est, comment il fonctionne et ses différentes fonctions aujourd’hui. Alors accrochez-vous, il est temps de suivre un cours intensif.
Qu’est-ce que HTTP ?
HTTP signifie Hypertext Transfer Protocol, et c’est un mécanisme utilisé pour transférer des données sur Internet entre des clients (ordinateurs, portables, téléphones, etc.) et des serveurs.
Ainsi, si vous allez dans la barre d’adresse de votre navigateur et tapez une adresse web, le navigateur recherche l’adresse du serveur associée à cette URL. À partir de là, le navigateur tente d’établir une connexion au serveur connue sous le nom de connexion TCP sur HTTP le port par défaut du trafic : le port 80. Si la connexion est établie avec le navigateur (ce qui signifie que le serveur est valide), votre navigateur envoie alors une requête similaire à celle-ci :
GET /18_tyyp.html HTTP/2.0
Host: the web address or URL
User-Agent: The browser’s name
En utilisant la même connexion, le serveur répondra alors :
HTTP/2.0 200 OK
Content-Length: 65635
Content-Type: html/text
Last-Modified: Fri, 24 Jan 2020 08:35:42 GMT
<!doctype html>
…the document's remaining part
Le navigateur affiche son corps, la partie qui suit la ligne vide dans le document, sous forme de document HTML.
La requête est l’information envoyée par le client. Cela commence ainsi :
GET /18_http.html HTTP/2.0
La méthode de requête définit le premier mot. GET implique que la ressource que vous recherchez est spécifiée. D’autres méthodes de requête incluent DELETE pour supprimer une ressource, PUT pour remplacer ou créer des ressources, et POST pour envoyer des informations à la ressource.
Il est important de noter que le serveur n’a aucune obligation de répondre à toutes les requêtes qui lui sont envoyées. Cela dit, c’est une communication assez simple.
Lorsque vous entrez une URL dans la barre d’adresse d’un navigateur, il est demandé à ce dernier d’effectuer une requête. Si la page HTML résultant de la requête contient d’autres fichiers (fichiers JavaScript, images, etc.), ils sont tous également récupérés et créent ensemble la page que vous avez demandée.
Certains sites web peuvent inclure entre 10 et 200 ressources. Pour récupérer toutes ces ressources rapidement, le navigateur effectue plusieurs requêtes GET simultanées au lieu d’attendre les réponses l’une après l’autre. Sinon, les pages mettraient un temps infini à se charger correctement, et personne n’a de temps à perdre.
Le sandboxing HTTP
Comme vous le savez probablement, HTTP n’est pas le moyen de communication le plus sécurisé au monde. Il y a de quoi s’inquiéter lorsqu’on effectue une requête HTTP dans le script d’une page web. La personne en charge du script peut avoir des intérêts différents de celle qui exécute la requête. Par exemple, je pourrais visiter `themafia.org`, mais je ne veux pas que le script de cette page envoie une requête à une autre page en utilisant des informations qu’il peut identifier depuis mon navigateur. Non pas que je m’intéresse à la mafia, bien sûr.
C’est la raison pour laquelle les navigateurs n’autorisent pas le script d’une page web à faire des requêtes HTTP vers un autre domaine : cela protège l’utilisateur. Cependant, un autre problème se pose lorsque quelqu’un tente de créer un serveur système qui pourrait légitimement demander l’accès à d’autres domaines. Cela se résout facilement lorsque le serveur intègre un en-tête tel que celui-ci : Access-Control-Allow-Origin dans sa réponse. L’en-tête indique explicitement au navigateur d’autoriser les requêtes provenant d’un autre domaine.
HTTPS et la sécurité
Les données peuvent parcourir un long chemin sur Internet, et l’itinéraire qu’elles empruntent peut être long et dangereux. Avant d’arriver à destination, elles doivent traverser différents éléments en cours de route qui peuvent inspecter ou même modifier les données.
Si vous voulez garder une information secrète (comme des mots de passe) ou si vous voulez que les données arrivent à destination sans modification, alors le simple HTTP ne suffit pas.
Une version plus sécurisée du protocole HTTP est https://. Cette URL enveloppe le trafic HTTP de telle sorte qu’il est plus difficile de le falsifier ou de le lire. Avant l’échange de données, le client confirme d’abord l’authenticité du serveur en lui demandant de prouver qu’il possède son certificat cryptographique, qui est généralement délivré par une autorité reconnue par le navigateur. Après cette étape, toutes les données qui transitent par cette connexion sont chiffrées de sorte qu’il est impossible de les falsifier et/ou de les intercepter.
Lorsque HTTPS fonctionne bien, il empêche d’autres personnes d’essayer d’usurper l’identité du site web que vous essayez d’atteindre, gardant ainsi vos données en sécurité. Il n’est cependant pas parfait. Si un logiciel tombe en panne ou si des certificats sont volés, les données peuvent toujours être menacées. Néanmoins, il est beaucoup plus sûr que le simple et bon vieux HTTP.
À propos de l’auteur
Alice Jones est une journaliste et freelance basée à San Francisco qui se concentre sur la rédaction de travaux universitaires et les missions en freelance. Ses écrits portent principalement sur le commerce et le marketing, et elle a obtenu sa licence et son master à l’Université de San Francisco.