4xx · Errores del cliente
Error 400 Bad Request: qué significa y cómo solucionarlo
El error 400 Bad Request significa que el servidor no puede procesar la petición porque está mal formada: JSON inválido, parámetros que faltan, cabeceras corruptas o una cookie demasiado grande. El problema está en lo que envía el cliente, no en el servidor, así que repetir la misma petición dará el mismo error.
Qué significa el código 400
Es el error genérico de "no entiendo lo que me pides". Las APIs bien hechas devuelven en el cuerpo qué campo falla; si solo ves "400 Bad Request" sin más, mira los logs del servidor para saber qué validación no se cumple.
En el navegador, un 400 al entrar en una web que antes funcionaba suele deberse a cookies corruptas o demasiado grandes para ese dominio. Nginx lo muestra como "400 Bad Request – Request Header Or Cookie Too Large".
Causas habituales del error 400
- JSON mal formado: una coma de más, comillas simples en vez de dobles, Content-Type que no coincide con el cuerpo.
- Parámetros obligatorios que faltan o con un tipo incorrecto (texto donde se espera un número).
- Cookies o cabeceras que superan el límite del servidor (nginx: 8 KB por línea de cabecera por defecto).
- URL con caracteres no válidos o mal codificados (espacios, % sueltos).
- Enviar HTTP plano a un puerto que espera HTTPS ("The plain HTTP request was sent to HTTPS port").
Si eres visitante de la web
- Borra las cookies del sitio (en Chrome: candado de la barra de direcciones → Cookies y datos de sitios).
- Comprueba que la URL no tiene caracteres raros; si la copiaste de un correo, vuelve a copiarla entera.
- Prueba en una ventana de incógnito: si ahí funciona, el problema son las cookies o una extensión.
Cómo solucionar el error 400
- Valida el JSON antes de enviarlo y revisa que Content-Type: application/json coincide con el cuerpo.
- Devuelve mensajes de error concretos en la API (qué campo, qué se esperaba); FastAPI responde 422 con ese detalle.
- Si el problema son cabeceras grandes (tokens JWT largos, muchas cookies), sube large_client_header_buffers en nginx.
Configuración y comandos
nginx: "Request Header Or Cookie Too Large"
http {
large_client_header_buffers 4 32k;
}Comprobar qué responde la API
curl -i -X POST https://api.ejemplo.com/usuarios \
-H "Content-Type: application/json" \
-d '{"email": "ana@ejemplo.com"}'Ejemplo de respuesta
HTTP/1.1 400 Bad Request
Content-Type: application/json
{"error": "invalid_json", "detail": "Unexpected token } in JSON at position 41"}Herramientas para comprobarlo
Preguntas frecuentes
¿El error 400 es culpa del servidor?
Normalmente no: indica que la petición del cliente es incorrecta. La excepción es cuando el servidor rechaza peticiones válidas por un límite mal configurado, como el tamaño de las cabeceras.
¿Qué diferencia hay entre 400 y 422?
400 se usa cuando la petición está mal formada (no se puede ni leer). 422 cuando se puede leer pero los datos no son válidos, como un email sin @.
¿Cómo arreglo "400 Bad Request – Request Header Or Cookie Too Large"?
Como visitante, borra las cookies de ese sitio. Como administrador, aumenta large_client_header_buffers en nginx o reduce el tamaño de las cookies que pone tu aplicación.
Códigos relacionados
- 401 UnauthorizedFalta autenticación o las credenciales no son válidas. No confundir con 403.
- 413 Payload Too LargeEl cuerpo de la petición supera el límite del servidor.
- 414 URI Too LongLa URL es más larga de lo que el servidor está dispuesto a procesar.
- 422 Unprocessable ContentLa petición está bien formada pero sus datos no son válidos.
- 431 Request Header Fields Too LargeLas cabeceras de la petición (normalmente las cookies) son demasiado grandes.