Web Protocol

HTTP & HTTPS

HTTP est le protocole du web. Les méthodes, les codes de statut, les headers et la mise en cache constituent le vocabulaire sur lequel repose chaque API et chaque chargement de page.

beginner16 min readUpdated 15 sept. 2026
request.js
js
// request.js
const res = await fetch("/api/users", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Accept: "application/json",
  },
  body: JSON.stringify({ name: "Ada" }),
});

console.log(res.status); // 201
const user = await res.json();
Modèle
Requête / réponse
Méthodes
GET, POST, PUT, PATCH, DELETE
Statuts
1xx à 5xx
Stateless
Les cookies gèrent l'état
Sécurisé
HTTPS via TLS
Moderne
HTTP/2 et HTTP/3

Pourquoi c'est important

Pourquoi HTTP est essentiel

Universel

Chaque navigateur, API, proxy et CDN parle HTTP, ce qui en fait l'interface la plus interopérable du logiciel.

Sécurisé par défaut

HTTPS chiffre le trafic et vérifie l'identité du serveur, protégeant ainsi les données et les utilisateurs sur les réseaux hostiles.

Mise en cache

Des headers corrects permettent aux navigateurs et aux CDN de réutiliser les réponses, ce qui est le gain de performance le plus simple et le moins coûteux.

Le tableau complet

Les trois piliers de HTTP

Une requête décrit ce que vous voulez, une réponse décrit ce qui s'est passé, et les headers transportent les métadonnées pour les deux.

La requête

Demande

Une méthode, un chemin, des headers et un corps optionnel décrivent ce que le client souhaite.

La réponse

Réponse

Un code de statut, des headers et un corps décrivent le résultat.

Les headers

Métadonnées

Les types de contenu, la mise en cache, les cookies et les politiques de sécurité voyagent aux côtés de la charge utile.

HTTP en un coup d'œil

Le cœur de HTTP

Méthodes

GET lit, POST crée, PUT remplace, PATCH met à jour, DELETE supprime.

Codes de statut

2xx succès, 3xx redirection, 4xx erreur client, 5xx erreur serveur.

Headers

Métadonnées telles que Content-Type, Accept, Authorization et Cache-Control.

Cookies

Petites valeurs renvoyées automatiquement par le navigateur, utilisées pour les sessions.

Mise en cache

ETag, Last-Modified et Cache-Control contrôlent la réutilisation.

TLS

HTTPS chiffre la connexion et prouve l'identité du serveur.

Un bref aperçu

De HTTP/0.9 à HTTP/3

  1. 1991

    HTTP/0.9

    Une seule méthode pour récupérer du HTML via une requête simple.

    91
  2. 1997

    HTTP/1.1

    Les connexions persistantes, les headers Host et la mise en cache deviennent la norme.

    97
  3. 2015

    HTTP/2

    Le multiplexage et la compression des headers corrigent nombre de goulots d'étranglement de HTTP/1.1.

    15
  4. 2022

    HTTP/3

    Un nouveau transport via QUIC réduit la latence et améliore la fiabilité.

    22
  5. Aujourd'hui

    HTTPS partout

    Le chiffrement est désormais la norme sur tout le web.

    Aujourd'hui

Le guide complet

HTTP & HTTPS: Tout ce que vous devez savoir

Qu’est-ce que HTTP ?

HTTP, le HyperText Transfer Protocol, est le moyen par lequel les clients et les serveurs communiquent sur le web. Un client envoie une requête décrivant ce qu’il souhaite ; un serveur renvoie une réponse décrivant ce qui s’est produit. Chaque chargement de page, appel API, image et police de caractères transite de cette manière.

C’est un protocole simple, basé sur le texte et stateless (sans état) : chaque requête est indépendante et le serveur ne se souvient pas des précédentes, à moins qu’un élément comme un cookie ne transporte cet état. Cette simplicité est la raison pour laquelle HTTP a pu s’étendre à l’ensemble du web.

Requêtes

Une requête possède une méthode, un chemin, des headers et parfois un corps (body).

POST /api/users HTTP/2
Host: example.com
Content-Type: application/json
Accept: application/json
Authorization: Bearer <token>

{ "name": "Ada" }

La méthode définit le type d’action effectuée. Le chemin identifie la ressource. Les headers transportent des métadonnées, et le body transporte les données pour des méthodes comme POST et PUT.

Méthode Objectif Safe Idempotent
GET Lire une ressource Oui Oui
POST Créer ou déclencher Non Non
PUT Remplacer une ressource Non Oui
PATCH Mise à jour partielle Non Non
DELETE Supprimer une ressource Non Oui

Safe signifie que l’opération ne modifie pas l’état du serveur ; idempotent signifie que la répéter a le même effet que de l’exécuter une seule fois. Ces propriétés sont essentielles pour la mise en cache, les tentatives de réexécution (retries) et les proxys.

Réponses et codes de statut

Une réponse se compose d’un code de statut, de headers et d’un corps (body).

HTTP/2 201 Created
Content-Type: application/json
Location: /api/users/42

{ "id": 42, "name": "Ada" }

Le code de statut indique au client ce qu’il s’est passé. Voici les plus courants :

  • 200 OK — succès.
  • 201 Created — une nouvelle ressource a été créée.
  • 204 No Content — succès, mais sans corps de réponse.
  • 301 / 302 — redirections permanente et temporaire.
  • 304 Not Modified — la copie en cache est toujours valide.
  • 400 Bad Request — entrée invalide.
  • 401 Unauthorized — non authentifié.
  • 403 Forbidden — authentifié, mais sans autorisation.
  • 404 Not Found — ressource inexistante.
  • 500 Internal Server Error — erreur interne du serveur.

Renvoyer le bon code n’est pas une question de pédantisme : les clients, les caches et le monitoring en dépendent tous.

En-têtes

Les en-têtes constituent la couche de métadonnées. Les en-têtes de requête courants incluent Accept, Content-Type, Authorization, Cookie et User-Agent. Les en-têtes de réponse courants incluent Content-Type, Content-Length, Cache-Control, Set-Cookie ainsi que des en-têtes de sécurité tels que Content-Security-Policy.

// fetch.js
const res = await fetch("/api/posts", {
  headers: {
    Accept: "application/json",
    Authorization: `Bearer ${token}`,
  },
});

Les en-têtes permettent d’exprimer la négociation de contenu, l’authentification, la mise en cache et les politiques de sécurité.

Cookies et sessions

HTTP est un protocole sans état (stateless), c’est pourquoi les serveurs utilisent des cookies pour reconnaître les utilisateurs qui reviennent. Le serveur envoie Set-Cookie, et le navigateur renvoie ce cookie lors des requêtes suivantes vers la même origine.

Les cookies de session doivent toujours être :

Set-Cookie: session=abc123; HttpOnly; Secure; SameSite=Lax; Path=/
  • HttpOnly empêche JavaScript de le lire, ce qui limite les risques de XSS.
  • Secure garantit qu’il n’est envoyé que via HTTPS.
  • SameSite limite l’envoi entre sites différents, ce qui aide à prévenir le CSRF.

Le guide de sécurité Web présente une vue d’ensemble complète.

Mise en cache

La mise en cache est la fonctionnalité HTTP la plus précieuse pour les performances. Deux mécanismes fonctionnent ensemble :

  • La fraîcheur avec Cache-Control, qui définit la durée pendant laquelle une réponse peut être réutilisée.
  • La validation avec ETag ou Last-Modified, qui permet au client de demander « est-ce que ceci a changé ? » et de recevoir un 304 Not Modified lorsque ce n’est pas le cas.
# versioned assets: cache for a year
Cache-Control: public, max-age=31536000, immutable

# HTML: revalidate every time
Cache-Control: no-cache

Utilisez le fingerprinting pour vos assets avec un hash de contenu et mettez-les en cache de manière agressive ; un fichier modifié recevra un nouveau nom. Servez le HTML avec un cache court et une revalidation pour que les déploiements soient pris en compte.

HTTPS et TLS

HTTPS est du HTTP via TLS. TLS remplit trois fonctions :

  1. Chiffrer le trafic pour qu’il ne puisse pas être lu pendant le transit.
  2. Authentifier le serveur à l’aide d’un certificat.
  3. Préserver l’intégrité pour que les données ne puissent pas être modifiées discrètement.

Obtenez un certificat (il existe des options gratuites), redirigez tout le trafic HTTP vers HTTPS et activez le HSTS pour empêcher les navigateurs d’utiliser le HTTP non sécurisé pour votre domaine. Considérez le HTTP comme un protocole obsolète.

Versions de HTTP

  • HTTP/1.1 — une seule requête à la fois par connexion, c’est pourquoi les sites avaient l’habitude de concaténer les fichiers.
  • HTTP/2 — multiplexe plusieurs requêtes sur une seule connexion et compresse les headers, éliminant ainsi la plupart de ces astuces.
  • HTTP/3 — s’appuie sur QUIC, un transport basé sur UDP, réduisant la latence de connexion et gérant mieux la perte de paquets.

Le service en HTTPS active généralement HTTP/2 ou HTTP/3 automatiquement via votre serveur ou votre CDN. Vous avez rarement besoin de modifier votre code.

Bonnes pratiques

  • Utilisez HTTPS partout et redirigez le HTTP vers HTTPS avec HSTS.
  • Renvoyez des codes de statut précis et des corps d’erreur explicites.
  • Veillez à ce que les méthodes soient sûres et idempotentes, conformément à leurs définitions.
  • Configurez Cache-Control et les validateurs de manière réfléchie.
  • Utilisez des cookies HttpOnly, Secure et SameSite pour les sessions.
  • Configurez les headers de sécurité tels que CSP et X-Content-Type-Options.
  • Privilégiez HTTP/2 ou HTTP/3 et laissez la plateforme gérer la négociation.

Erreurs courantes

  • Retourner un code 200 pour des erreurs, ce qui perturbe les clients et les caches.
  • Modifier des données via GET, ce qui est risqué car ces requêtes peuvent être mises en cache ou préchargées.
  • Désactiver le cache pour tout, au détriment des performances.
  • Stocker les jetons de session dans localStorage au lieu d’un cookie.
  • Oublier de rediriger le HTTP vers le HTTPS.
  • Ignorer Content-Type et recevoir des erreurs d’analyse (parse errors).

Et après ?

HTTP est le langage commun du web, et le maîtriser est un atout majeur. Approfondissez vos connaissances avec les fondamentaux d’internet, comprenez le DNS, effectuez des requêtes en JavaScript avec Fetch, et sécurisez votre trafic grâce au guide de sécurité web.

Signaler le résultat

Renvoyez le code de statut correspondant à l'événement pour que les clients et les caches se comportent correctement.

À privilégier
if (!post) {
  return res.status(404).json({
    message: "Post not found",
  });
}
À éviter
// always 200, even for errors
return res.json({ error: "not found" });

Mettre en cache une réponse

Des headers de cache explicites permettent aux navigateurs et aux CDN de réutiliser les réponses en toute sécurité au lieu de les récupérer à chaque fois.

À privilégier
Cache-Control: public, max-age=31536000, immutable
ETag: "a1b2c3"
À éviter
Cache-Control: no-store
# every visitor downloads
# everything again

FAQ

Foire aux questions

Keep learning

Related topics from the roadmap.

$ commencer à apprendre

Prêt à apprendre HTTP / HTTPS ?

Notre tutoriel interactif vous guide à travers HTTP / HTTPS pas à pas — avec des quiz et du vrai code que vous pouvez exécuter dans le navigateur.