Le serveur a entendu. Il a traité. Maintenant, il doit répondre. Cette réponse n'est pas un simple "oui" ou "non". C'est un document tout aussi structuré que la requête, un bulletin officiel qui scelle l'échange : la réponse HTTP. Elle contient le verdict, les instructions, et, le cas échéant, le butin.
1. L'Anatomie d'une Réponse : Le Rapport en Trois Parties
Comme pour la requête, la réponse suit un format strict en trois blocs.
a. La Ligne de Statut C'est la première et la plus cruciale ligne. Elle donne le résultat global de l'opération. C'est ici qu'apparaît le fameux code de statut HTTP, le verdict numérique.
- La version du protocole (
HTTP/1.1) - Le code numérique (
200,404,500) - La phrase explicative associée (
OK,Not Found,Internal Server Error)
Exemple : HTTP/1.1 404 Not Found
Cette ligne seule dit tout : la demande a échoué, et c'est parce que la ressource n'a pas été trouvée.
b. Les En-têtes de Réponse Le serveur joint ses propres métadonnées. Ils donnent des informations vitales sur la réponse elle-même :
Content-Type: Le type MIME du contenu renvoyé. Indispensable pour que le navigateur sache s'il doit afficher du HTML (text/html), une image (image/jpeg) ou traiter du JSON (application/json).Content-Length: La taille en octets du corps de la réponse.Server: Quel logiciel serveur a généré la réponse (Apache, Nginx).Set-Cookie: Pour demander au navigateur de stocker un cookie.Location: Utilisé avec les redirections (3xx) pour indiquer la nouvelle adresse.
c. Le Corps de la Réponse (Body) C'est le contenu utile, la cargaison. Présent pour presque toutes les réponses réussies (2xx), il peut être :
- Le code HTML d'une page web.
- Les données JSON d'une API.
- Le contenu binaire d'une image ou d'un PDF.
- Un message d'erreur destiné à être affiché.
Pour certaines réponses (comme
204 No Contentou les réponsesHEAD), le corps est intentionnellement vide.
2. Le Code de Statut : La Langue des Chiffres
Les codes HTTP sont organisés en classes, selon leur premier chiffre. C'est un langage universel entre machines.
-
1xx (Informationnel) : "Je suis en train de traiter." Ces codes sont rares et transitent en coulisses. Ex:
100 Continue(la requête peut continuer). -
2xx (Succès) : "C'est bon, voilà ce que tu voulais." C'est ce qu'on espère toujours voir.
200 OK: Le succès standard. La requête a réussi, la réponse contient les données demandées.201 Created: Succès pour une création (après unPOST). La réponse contient souvent l'emplacement de la nouvelle ressource.
-
3xx (Redirection) : "Ce n'est pas ici, allez là-bas." Le client doit effectuer une action supplémentaire (suivre une nouvelle adresse).
301 Moved Permanently: La ressource a déménagé pour de bon. Mémorisez la nouvelle adresse.
-
4xx (Erreur Client) : "Vous avez fait une erreur." La faute vient de la requête (mauvaise URL, manque de droits, données invalides).
400 Bad Request: La requête est mal formée, syntaxe invalide. Le serveur n'a pas pu la comprendre.401 Unauthorized: Authentification requise. Le client doit s'identifier (se "logger").403 Forbidden: Accès refusé. Même avec une identité, vous n'avez pas le droit de voir ceci.404 Not Found: Le plus célèbre. La ressource demandée n'existe pas à cette adresse sur ce serveur.
-
5xx (Erreur Serveur) : "J'ai fait une erreur." La faute est interne au serveur. Le client a fait une demande valide, mais le serveur a planté.
500 Internal Server Error: L'erreur générique et inquiétante. Quelque chose a mal tourné dans le code ou la configuration du serveur, mais il ne peut ou ne veut pas en dire plus.
3. Scènes de la Vie du Web : Codes en Action
-
Succès d'une page classique
Requête :GET /index.html
Réponse :HTTP/1.1 200 OKavecContent-Type: text/html. Le corps contient le code HTML. -
Création d'un nouvel utilisateur (API)
Requête :POST /api/usersavec un JSON dans le corps.
Réponse :HTTP/1.1 201 Created. L'en-têteLocation: /api/users/123indique où trouver le nouveau profil. -
Page qui a changé d'adresse
Requête :GET /ancienne-page
Réponse :HTTP/1.1 301 Moved PermanentlyavecLocation: /nouvelle-page. Le navigateur redirige automatiquement. -
Tentative d'accès sans mot de passe
Requête :GET /admin/dashboard
Réponse :HTTP/1.1 401 Unauthorized. Le navigateur affiche généralement une pop-up de connexion. -
L'erreur emblématique
Requête :GET /une-page-qui-nexiste-pas.html
Réponse :HTTP/1.1 404 Not Found. C'est la page d'erreur que tout le monde a déjà vue. -
Le serveur en panne
Requête :GET /
Réponse :HTTP/1.1 500 Internal Server Error. Le corps contient parfois une page générique d'excuses de l'hébergeur.
La réponse HTTP est donc bien plus qu'un simple contenu. C'est un accusé de réception complet, une fiche de résultat qui dit si tout s'est bien passé, comment interpréter les données reçues, et que faire en cas de problème. C'est le billet de retour sans lequel aucune transaction ne serait complète.