Le protocole HTTP
Le langage commun du Web
HTTP (HyperText Transfer Protocol) est le protocole qui définit comment un client et un serveur se parlent. C'est la grammaire de la conversation Web. Sans HTTP, navigateur et serveur ne se comprendraient pas.
Analogie : HTTP, c'est comme commander au restaurant. Il y a des règles : tu appelles le serveur (connexion), tu lis la carte (requête GET), tu passes commande (requête POST), il revient avec l'addition (headers) et le plat (body). Tout le monde suit le même protocole pour que ça fonctionne.
Structure d'une requête HTTP
Une requête HTTP est du texte pur. Voici à quoi ça ressemble en vrai :
// Requête HTTP complète (ce que le navigateur envoie)
GET /modules/web/ HTTP/1.1
Host: monminilab.fr
Accept: text/html,application/xhtml+xml
Accept-Language: fr-FR,fr;q=0.9
User-Agent: Mozilla/5.0 (Windows NT 10.0) Chrome/120
Connection: keep-alive
// (corps vide pour un GET)
Et la réponse du serveur :
// Réponse HTTP du serveur
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 4823
Cache-Control: max-age=3600
Date: Wed, 15 Apr 2026 10:00:00 GMT
<!DOCTYPE html>
<html>...</html>
// (le corps : la page HTML)
Les méthodes HTTP
La méthode indique l'intention de la requête. Les plus courantes :
GET → Lire une ressource GET /articles/42
POST → Créer / envoyer des données POST /articles (+ body)
PUT → Remplacer une ressource PUT /articles/42 (+ body)
PATCH → Modifier partiellement PATCH /articles/42 (+ body)
DELETE → Supprimer DELETE /articles/42
GET vs POST en pratique : quand tu visites une page, c'est un GET. Quand tu soumets un formulaire (connexion, contact, commande), c'est un POST. Le POST envoie les données dans le corps de la requête, pas dans l'URL — donc elles ne sont pas visibles dans la barre d'adresse.
Les codes de statut HTTP
Chaque réponse HTTP commence par un code de statut à 3 chiffres. Le premier chiffre indique la catégorie :
1xx → Information (rarement vu en pratique)
2xx → Succès
3xx → Redirection
4xx → Erreur CLIENT (tu as mal demandé)
5xx → Erreur SERVEUR (le serveur a planté)
Les codes que tu rencontreras tout le temps :
200 OK → Tout s'est bien passé ✓
201 Created → Ressource créée (POST réussi)
301 Moved → Redirection permanente (ex: http → https)
302 Found → Redirection temporaire
304 Not Modified → Cache : le contenu n'a pas changé
400 Bad Request → Requête mal formée
401 Unauthorized → Authentification requise
403 Forbidden → Accès refusé (même authentifié)
404 Not Found → Ressource introuvable
429 Too Many Reqs → Trop de requêtes (rate limiting)
500 Internal Error → Crash côté serveur
502 Bad Gateway → Erreur entre serveurs (reverse proxy)
503 Unavailable → Serveur surchargé ou en maintenance
401 vs 403 : 401 = "je ne sais pas qui tu es, identifie-toi d'abord". 403 = "je sais qui tu es, mais tu n'as pas le droit". La différence est subtile mais importante pour sécuriser une API.
Les headers HTTP
Les headers (en-têtes) sont des métadonnées qui accompagnent la requête ou la réponse. Ils donnent des informations sur le contenu, le cache, l'authentification…
// Headers importants côté REQUÊTE
Host: monminilab.fr ← domaine demandé
Authorization: Bearer eyJhbGci... ← token d'authentification
Content-Type: application/json ← format du corps envoyé
Accept: text/html ← format attendu en retour
// Headers importants côté RÉPONSE
Content-Type: text/html; charset=UTF-8 ← format du contenu
Cache-Control: max-age=86400 ← durée de mise en cache
Set-Cookie: session=abc123; HttpOnly ← crée un cookie
Location: /nouvelle-url ← URL de redirection (3xx)
HTTP/1.1, HTTP/2, HTTP/3
HTTP a évolué pour être plus rapide :
- HTTP/1.1 (1997) — texte pur, une requête à la fois par connexion
- HTTP/2 (2015) — binaire, plusieurs requêtes simultanées sur une connexion
- HTTP/3 (2022) — basé sur UDP (au lieu de TCP), encore plus rapide
Pour toi en tant qu'utilisateur ou développeur web, la version est gérée automatiquement. Mais c'est bon à savoir quand on parle de performances.
- HTTP = protocole texte qui définit comment client et serveur se parlent.
- Les méthodes principales : GET (lire), POST (créer/envoyer), PUT (remplacer), DELETE (supprimer).
- 2xx = succès, 3xx = redirection, 4xx = erreur client, 5xx = erreur serveur.
- Les headers transportent des métadonnées (type de contenu, cache, authentification…).
- POST envoie les données dans le corps, pas dans l'URL — plus sécurisé pour les données sensibles.