204 No Content : un succès avec une réponse vide
204 No Content : la requête a réussi et le serveur n’envoie volontairement aucun corps, comme pour les mises à jour d’API et les requêtes CORS preflight.
204 No Content signifie que la requête a réussi et qu’il n’y a volontairement rien à renvoyer. C’est courant pour les mises à jour et suppressions d’API, les balises de mesure d’audience et les vérifications préalables (preflight) du navigateur, mais c’est un problème dès qu’il est renvoyé pour une page censée avoir du contenu.
Définition
La RFC 9110, section 15.3.5 indique que le serveur a satisfait la requête et qu’il n’y a aucun contenu supplémentaire à envoyer. Un 204 ne peut pas avoir de corps : la réponse s’arrête après les en-têtes, et les métadonnées qu’ils contiennent décrivent la ressource cible après l’action. Pour un navigateur, un 204 signifie « restez où vous êtes » : un lien ou un formulaire qui renvoie 204 ne change donc pas la page affichée. Un 204 est mis en cache par défaut.
Quand le 204 est correct
- Les mises à jour PUT ou PATCH et les requêtes DELETE dans les API REST.
- Les réponses CORS preflight aux requêtes
OPTIONS. - Les points d’accès d’analytics et de suivi, qui ont seulement besoin de recevoir des données.
- Les tests de connectivité : Android, par exemple, interroge une URL
generate_204pour détecter les portails captifs.
Impact SEO
Pour des pages HTML, un 204 est un bogue. La documentation de Google explique que Googlebot signale au processus d’indexation qu’il n’a reçu aucun contenu, et la Search Console peut classer l’URL en soft 404 dans le rapport « Indexation des pages ». Pour Google, la page est vide : elle ne se positionnera donc pas. Voici comment cela arrive :
- Un contrôleur ne renvoie rien. ASP.NET Core, par exemple, transforme un résultat
nulld’une action d’API en 204. - Une route ou un middleware termine la réponse avant l’affichage du modèle de page.
- Une règle de CDN ou d’edge écrite pour un chemin de balise de suivi s’applique aussi à de vraies pages.
Comment corriger et vérifier
Faites en sorte que les routes de pages affichent toujours un modèle avec 200 OK, ou renvoient 404 quand l’élément n’existe pas, jamais un succès vide. Analysez vos URL importantes avec le vérificateur de statut HTTP et utilisez le vérificateur d’en-têtes HTTP pour savoir quelle couche a répondu. Voici un 204 correct, ici pour une requête CORS preflight :
OPTIONS /api/v1/cart HTTP/1.1
Host: api.example.com
Origin: https://www.example.com
Access-Control-Request-Method: PATCH
HTTP/1.1 204 No Content
Access-Control-Allow-Origin: https://www.example.com
Access-Control-Allow-Methods: GET, POST, PATCH
Access-Control-Max-Age: 600 Questions fréquentes
Le code 204 No Content est-il une erreur ?
Non, c’est un code de succès. Il signifie simplement qu’il n’y a rien à renvoyer, ce qui est normal pour de nombreuses mises à jour d’API, suppressions et requêtes preflight.
Pourquoi la Search Console affiche-t-elle un soft 404 pour une page qui renvoie 204 ?
Google interprète un 204 comme « aucun contenu reçu ». Une page sans contenu ne peut pas être indexée : la Search Console peut donc la signaler comme soft 404. Faites en sorte que la page renvoie 200 avec son HTML.
Une requête DELETE doit-elle renvoyer 204 ou 200 ?
L’un et l’autre conviennent. Utilisez 204 quand il n’y a rien d’utile à renvoyer, et 200 quand vous renvoyez une confirmation ou l’élément supprimé.