415 Unsupported Media Type : le format du corps de la requête est incorrect
415 Unsupported Media Type : le serveur refuse le corps de la requête à cause de son format, souvent un en-tête Content-Type absent ou incorrect.
415 Unsupported Media Type signifie que le serveur n’accepte pas le corps de la requête à cause de son format. Vous avez envoyé des données de formulaire à un point d’accès qui attend du JSON, oublié l’en-tête Content-Type, ou utilisé une compression que le serveur ne sait pas décoder.
Définition
La RFC 9110, section 15.5.16 indique que le problème peut venir du Content-Type de la requête, de son Content-Encoding, ou de l’inspection directe des données par le serveur. Quand la cause est un codage de contenu non pris en charge, la réponse devrait inclure un en-tête Accept-Encoding listant les codages acceptés. Pour PATCH, la RFC 5789 définit Accept-Patch pour lister les formats de correctif pris en charge.
Ne le confondez pas avec 406 Not Acceptable : le 415 concerne ce que le client envoie, le 406 ce qu’il accepte de recevoir.
Causes courantes
- Un
Content-Typeabsent ou incorrect, commeapplication/x-www-form-urlencodedoutext/plainenvoyé à une API JSON. Des frameworks comme Spring et ASP.NET Core les rejettent avec un 415. - Un envoi de fichier dans un type que le point d’accès n’accepte pas.
- Un corps de requête compressé en gzip envoyé à un serveur qui ne décompresse pas les requêtes.
- Des appels JavaScript
fetch()qui envoientJSON.stringify(data)sans définir l’en-tête, si bien que le corps part entext/plain.
Comment le corriger
# curl : déclarer le corps JSON
curl -X POST https://api.example.com/v1/contacts \
-H 'Content-Type: application/json' \
-d '{"email":"sara@example.com"}'
// fetch()
fetch('/api/v1/contacts', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: 'sara@example.com' })
});
Côté serveur, renvoyez un message qui nomme les types acceptés, afin que les intégrateurs corrigent vite leur appel.
Impact SEO
Les robots n’envoient pas de corps de requête : le 415 n’a donc aucun effet direct sur l’indexation. Il apparaît pourtant dans le travail SEO via les API : soumettre des URL à IndexNow par POST, par exemple, exige un corps JSON avec le bon en-tête, ce que l’outil d’envoi IndexNow gère pour vous. Si une page ordinaire renvoie 415 à un GET, c’est un bogue du serveur ; Google le traiterait comme un 4xx et retirerait la page. Contrôlez vos pages avec le vérificateur de statut HTTP.
Exemple
POST /api/v1/contacts HTTP/1.1
Host: api.example.com
Content-Type: text/plain
email=sara@example.com
HTTP/1.1 415 Unsupported Media Type
Content-Type: application/json
{"error":"Expected Content-Type: application/json"} Questions fréquentes
Quelle est la différence entre 415 et 400 ?
400 est un message général : « cette requête est mal formée ». 415 est précis : le serveur ne sait pas traiter le format du corps que vous avez envoyé, en général à cause de l’en-tête Content-Type.
Comment corriger une erreur 415 dans fetch ou Postman ?
Définissez l’en-tête Content-Type en accord avec le corps, en général application/json pour du JSON, et vérifiez que le corps est bien dans ce format.
Une erreur 415 affecte-t-elle le SEO ?
Pas directement, puisque les robots n’envoient aucun corps de requête. Elle compte pour le travail avec les API, comme les outils de soumission d’URL, et une page qui renvoie 415 à un GET serait retirée comme n’importe quelle page 4xx.