cybercursus

Anatomie d'une requête HTTP : méthodes, GET vs POST

9 min · Débutant · 7 août 2026

Sommaire
  1. Ce que contient réellement une requête
  2. GET : demander sans modifier
  3. POST : envoyer des données qui changent quelque chose
  4. Repérer où une donnée utilisateur peut se cacher

Ce que contient réellement une requête

Une requête HTTP, malgré son nom technique, est simplement du texte structuré, envoyé du client vers le serveur :

text
GET /fr/cours/cybersecurite/injections-sql/ HTTP/1.1
Host: cybercursus.fr
User-Agent: Mozilla/5.0
Accept: text/html

Quatre éléments la composent :

  • La méthode (GET) : l’action demandée.
  • Le chemin (/fr/cours/.../) : la ressource visée.
  • Les en-têtes (Host, User-Agent, Accept, etc.) : des métadonnées sur la requête (détaillées au chapitre suivant).
  • Un corps optionnel : des données envoyées au serveur, absent ici, présent dans une requête POST typique.

GET : demander sans modifier

GET est la méthode par défaut d’un navigateur : cliquer sur un lien, taper une adresse, tout ça déclenche une requête GET. Elle est conçue pour être sûre (elle ne devrait provoquer aucun effet de bord côté serveur) et ses paramètres, s’il y en a, apparaissent directement dans l’URL :

text
GET /recherche?q=injection+sql HTTP/1.1

POST : envoyer des données qui changent quelque chose

POST sert à transmettre des données destinées à provoquer un changement : créer un compte, publier un commentaire, se connecter. Ces données voyagent dans le corps de la requête, pas dans l’URL :

text
POST /connexion HTTP/1.1
Host: exemple.test
Content-Type: application/x-www-form-urlencoded
Content-Length: 34

identifiant=ALICE&mot_de_passe=xxx

Attention

Utiliser POST au lieu de GET ne rend pas une donnée « sécurisée » : le corps d’une requête POST n’est ni chiffré ni caché par la méthode elle-même (seul HTTPS chiffre le trafic, voir le dernier chapitre de ce cours). La différence est une question d’exposition et de sémantique, pas de confidentialité.

Repérer où une donnée utilisateur peut se cacher

Le chapitre 1 du cours sur les injections SQL listait les points d’entrée typiques d’une application (champs de formulaire, paramètres d’URL, en-têtes HTTP). Avec la structure d’une requête maintenant posée, ces points d’entrée correspondent précisément aux éléments vus ici : le chemin et sa chaîne de requête pour un GET, le corps pour un POST, et les en-têtes dans les deux cas.

Quelle affirmation décrit correctement la différence entre GET et POST ?
Pourquoi un paramètre sensible ne devrait-il jamais être transmis dans l'URL d'une requête GET ?

Pour aller plus loin

Commentaires

Recherche