El formato del cuerpo no es compatible.
Cuándo usarlo
Al enviar datos de formulario a un endpoint JSON, o con un Content-Type incorrecto.
Causas habituales y soluciones
El servidor no puede analizar el formato del cuerpo, normalmente porque falta Content-Type o es incorrecto: JSON enviado sin Content-Type: application/json (curl -d usa application/x-www-form-urlencoded por defecto), datos de formulario multipart enviados a un endpoint que solo acepta JSON, o un charset o tipo de proveedor que el servidor rechaza. Spring y ASP.NET devuelven 415 cuando ningún manejador acepta el tipo declarado.
Content-Encoding también importa: un cuerpo comprimido con gzip enviado a un servidor que no descomprime las solicitudes recibe un 415. En los navegadores, fetch con un cuerpo de tipo string envía text/plain;charset=UTF-8 a menos que definas la cabecera. Ten en cuenta que application/json provoca un preflight CORS y text/plain no. curl --json, disponible desde la 7.82, define por ti tanto Content-Type como Accept.
Error del cliente (4xx)
Los códigos 4xx son errores del cliente: la solicitud en sí es incorrecta, no está autorizada o apunta a algo que no existe. Repetir la misma solicitud no servirá de nada.
Cómo se ve
HTTP/1.1 415 Unsupported Media TypeCómo enviarlo
| Node.js / Express | res.status(415).end() |
|---|---|
| Python / Flask | return '', 415 |
| nginx | return 415; |
Cómo comprobarlo
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/