Qu’est-ce que HTTP ?
Le protocole de transfert hypertexte (HTTP) est le protocole de communication qui permet de transférer des informations via des fichiers (HTML) sur le World Wide Web.
Conçu au début des années 1990, HTTP est un protocole extensible qui a évolué au fil du temps. C’est ce qu’on appelle un protocole de couche d’application, et il est transmis par le protocole TCP ou TLS. Comme il est extensible, il est utilisé non seulement pour transmettre des documents hypertextes HTTP, mais aussi des images ou des vidéos, ou encore pour envoyer des données ou du contenu à des serveurs, comme dans le cas des formulaires.
La méthode HTTP est à la base de tout échange de données sur le Web. Elle suit un schéma requête-réponse entre un client et un serveur. Chaque action de l’utilisateur, comme la saisie d’une URL ou un clic sur un lien par exemple, est convertie en requête HTTP auprès du serveur. Celui-ci renvoie alors un message de réponse au client, de sorte que l’utilisateur voit le résultat de sa requête s’afficher dans le navigateur.
Le protocole HTTP fonctionne au-dessus de la suite de protocoles TCP/IP, qui constitue la base d’Internet. La dernière version de HTTP est HTTP/2, qui a été publiée en mai 2015.
HTTP est également un protocole sans état, c’est-à-dire qu’il ne stocke aucune information sur les connexions précédentes. Or, le développement d’applications Web doit souvent maintenir l’état. Pour ce faire, on utilise des cookies, qui sont des informations qu’un serveur peut stocker sur le système du client. Cela permet aux applications Web de suivre les utilisateurs et leur activité en ligne, car les cookies peuvent être stockés sur le client pendant une période indéfinie.
Comment fonctionne HTTP ?
Le fonctionnement de HTTP est basé sur un schéma “requête-réponse” entre le serveur web et l’agent utilisateur, autrement dit, le client qui fait la demande de transmission de données. Un client peut être un navigateur web ou les robots d’exploration du web (web crawlers ou web spiders) qui inspectent les pages existantes.
Le serveur fournit au client une réponse structurée et dotée d’une série de métadonnées, qui établit les directives pour le lancement, le développement et la clôture de la transmission d’informations. Ce sont les méthodes de requête, c’est-à-dire les commandes qui déclenchent l’exécution de ressources spécifiques dont les fichiers sont stockés sur le serveur.
Par exemple, en ouvrant une page Web spécifique, l’échange d’informations entre le navigateur Web et le serveur établira comment les informations doivent être transmises, où se trouvent les images et dans quel ordre elles me seront affichées, etc. Cet échange de commandes de requête et de codes de réponse aboutit à l’affichage sur l’appareil des mêmes informations que celles contenues à l’origine sur le serveur, qui peut se trouver à des milliers de kilomètres.
Anatomie d’une requête HTTP
Une requête HTTP est un message qu’un ordinateur envoie à un autre en utilisant le protocole HTTP. Une requête HTTP est divisée en trois parties : la ligne de requête, l’en-tête et le corps. Une réponse HTTP est également divisée en trois parties : ligne d’état, en-tête et corps.
Ligne de requête
La ligne de requête comprend la méthode HTTP, l’URI de la requête et le protocole HTTP à utiliser.
- La méthode HTTP indique quel type d’action le client veut effectuer : lire une ressource, envoyer des informations à l’API, etc ;
- L’URI fait référence à l’adresse où se trouve la ressource ;
- Le protocole HTTP fait référence à la version du protocole qui va être utilisée.
En-tête
Les en-têtes sont des métadonnées envoyées dans la requête pour fournir des informations sur celle-ci. Chaque en-tête est spécifié avec un nom, puis deux points suivis de la valeur de cet en-tête. L’en-tête de la requête peut lui-même contenir plusieurs en-têtes.
Corps de la requête
Le corps de la requête comprend les informations supplémentaires envoyées au serveur. Il peut par exemple indiquer le nom d’utilisateur et le mot de passe d’une personne cherchant à se connecter, les réponses apportées à un formulaire, et bien d’autres informations. En d’autres termes, le corps de la requête représente le contenu transmis au serveur.
Retrouvez ci-dessous la liste des principales commandes pouvant être incluses dans une requête HTTP.
Commande | Description |
---|---|
GET | Requête d’une ressource spécifique en son ensemble |
HEAD | Requête de la ligne d’en-tête d’une ressource |
POST | Ajout de contenu, de messages ou de données vers une nouvelle page d’une ressource web existante |
PUT | Modification d’une ressource existante ou création d’une nouvelle URI si nécessaire |
DELETE | Suppression d’une ressource web spécifique |
TRACE | Affichage des modifications et ajouts apportés à la ressource |
OPTIONS | Affichage des méthodes HTTP disponibles pour une URL spécifique |
CONNECT | Conversion de la requête en tunnel TCP/IP |
PATCH | Modification partielle de la ressource |
Anatomie de la réponse HTTP
Lorsque le client envoie une requête HTTP, le serveur doit répondre avec une réponse HTTP. La réponse HTTP a également sa propre structure, similaire à la structure de la requête :
- La ligne d’état nous indique le statut de la requête, c’est-à-dire si elle a réussi ou si une erreur est survenue. Par exemple : http 200 OK
- L’en-tête est un ensemble d’en-têtes, tout comme l’en-tête de la requête. Le serveur peut envoyer autant d’en-têtes qu’il le souhaite.
- Enfin, le corps de la réponse, tout comme celui de la requête, contient toutes les données transmises au client et va permettre l’affichage du contenu HTML d’une page web dans le navigateur.
Les codes d’état HTTP
Voici une liste comprenant certains codes de réponse les plus fréquemment retrouvés en HTTP :
Code de réponse | Description |
---|---|
200 OK | Signifie que la requête, telle que GET ou POST, a été accomplie correctement. |
300 Moved Permanently | L’URL correspondant aux données demandées a changé définitivement. |
401 Unauthorized | Le client ou l’utilisateur ayant envoyé la requête n’est pas reconnu. |
403 Forbidden | L’identité du client est connue, mais celui-ci n’a pas l’autorisation d’accéder à la ressource. |
404 Not Found | C’est le code d’erreur le plus fréquent : l’URL n’a pas été reconnue ou la ressource demandée n’existe pas. |
500 Internal Server Error | Le serveur a rencontré une erreur inconnue l’empêchant d’accéder à la requête. |
Préoccupations de sécurité autour de HTTP
Malheureusement, HTTP n’est pas un protocole sécurisé. Il y a différentes raisons à cela :
- La sécurité des données est une difficulté majeure, car n’importe qui peut modifier un contenu. Le protocole HTTP est ainsi peu sécurisé en raison de l’absence de chiffrement, par rapport au HTTPS qui est protégé par un certificat SSL.
- Le protocole HTTP existe depuis longtemps, ce qui signifie que les hackers et autres cybercriminels ont eu plus de temps pour en découvrir les vulnérabilités et développer des attaques de type Attaque par l’homme du milieu, ou encore exploiter les failles XSS des sites web.
- HTTP ne possède pas les fonctionnalités de sécurité modernes de base qu’offrent les protocoles ou les outils de sécurité mis à jour.
- Enfin, HTTP ne garantit pas la confidentialité des informations, car tout le monde peut en voir le contenu.
Il existe plusieurs façons d’améliorer votre cybersécurité et de surmonter les failles de sécurité du protocole HTTP.
- Utilisez HTTPS: commencez par éviter les sites HTTP dans la mesure du possible. Si un site qui gère des données sensibles (comme des transactions financières) utilise HTTP, il ne prend pas votre sécurité au sérieux. Le protocole HTTPS permet d’atteindre les mêmes objectifs, mais de manière sécurisée grâce au chiffrement des informations. Néanmoins, il ne couvre pas tous les problèmes de sécurité qui peuvent être résolus avec un VPN. Apprenez-en plus sur les différences entre VPN et HTTPS.
- Utilisez un VPN: un VPN ne vous protégera pas contre les attaques qui sapent la sécurité de HTTP sur le site Web ou dans votre navigateur, mais il garantira que votre trafic HTTP restera sécurisé lors de son acheminement vers votre appareil. NordVPN dispose également d’une fonctionnalité appelée Protection anti-menaces qui peut vous aider à vous protéger contre certaines des attaques auxquelles HTTP est vulnérable.
- Utilisez des extensions de navigateur sécurisées: il existe de nombreuses extensions de navigateur qui peuvent améliorer votre sécurité en ligne. En fait, il en existe dont la fonction entière est de forcer les sites Web compatibles HTTPS à utiliser ce protocole chiffré chaque fois que cela est possible.
La sécurité en ligne commence par un simple clic.
Restez en sécurité avec le chef de file mondial en matière de VPN