Error 400 Bad Request: ¿Qué es y cómo solucionarlo?

Fecha: 06/05/2022

¿Qué es un error 400 bad request?


Un error 400 es un código de estado HTTP que se engloba en los código de error de cliente.

Estos códigos de error suelen producirse porque la solicitud realizada por el cliente (entendiendo por cliente un navegador, un script, etc.) contiene una sintaxis incorrecta o que no puede ser procesada por el servidor.

Un ejemplo de código de este tipo de los más conocidos es el 404, que se produce cuando un cliente envía una solicitud de una URL incorrecta al servidor.

El mensaje de error 400, aunque menos conocido debido a que suele darse mucho menos, sucede cuando un cliente parece haber enviado una solicitud incorrecta al servidor.

Por poner un ejemplo: un cliente envía una petición de tipo POST (guardado de datos, como la que enviaría normalmente un formulario) a una URL que solamente acepta peticiones de tipo GET (las que hacemos para obtener una página web).

Por convención, un código de respuesta 400, a menos que se genere en una petición de tipo HEAD (son un tipo específico de peticiones HTTP usadas para obtener solamente las cabeceras), el servidor responderá siempre indicando por qué se ha producido el error.

Índice del artículo
  • ¿Qué es un error 400 bad request?
  • Causas de un error 400
  • Error en la URL del navegador
  • Petición inválida del navegador
  • Caché DNS
  • Cookies o sesión corrupta
  • Solucionar el error 400 desde nuestro navegador web
  • Revisar la URL
  • Eliminar las cookies del sitio web y borrarlo de la caché del navegador
  • Comprobar la resolución DNS y vaciar la caché de nuestro equipo/navegador
  • Revisar el encabezado de la petición web
  • Conclusiones

Causas de un error 400


Como veníamos explicando, las causas de un error 400 son múltiples, pero están originadas siempre en una solicitud incorrecta del navegador (al menos, a ojos del servidor) de la herramienta que funciona a modo de cliente. A continuación, vamos a ver algunas de las causas más comunes que pueden producir este tipo de error:

Error en la URL del navegador


Si escribimos mal la URL del sitio web que queremos visitar podemos generar fácilmente un error 400 en vez de un error 404, como estamos acostumbrados.

Normalmente, al escribir en un navegador una URL incorrecta se nos devolverá un código de estado 404, es decir, un mensaje indicando que la URL no ha sido encontrada.

Además, los servidores acostumbran a estar preparados para comportarse de forma que envíen al cliente a una URL distinta, donde no se muestre el error.

Esto sucede, por ejemplo, en raiolanetworks.es. Si accedemos a en el navegador, veremos la página de inicio. No sucede así si miramos, mediante herramientas algo más avanzadas, cómo se comporta la web:
[usuario@host ~]$ curl -L 
HTTP/2 400
date: Wed, 04 May 2022 17:26:42 GMT
content-type: text/html; charset=utf-8
content-length: 150
server: nginx centminmod
x-powered-by: centminmod
x-xss-protection: 1; mode=block
x-content-type-options: nosniff

Petición inválida del navegador


Si por algún motivo el navegador no envía correctamente la comunicación al servidor, entonces se producirá un error de tipo 400 debido a que la comunicación no es correcta.

Este error es poco frecuente y suele darse asociado a pérdidas de red. Dado que las comunicaciones entre un cliente y servidor tienen mecanismos de control para este problema, no suele ser demasiado habitual.

En el siguiente ejemplo he forzado un error 400 conectándome a un servidor y realizando una petición con un mensaje incorrecto "GET / HTTP1.0". El mensaje correcto sería "GET / HTTP/1.0", en cuyo caso se permitiría continuar la comunicación:
[usuario@host ~]$ telnet 51.210.87.242 80
Trying 51.210.87.242...
Connected to 51.210.87.242.
Escape character is '^]'.
GET / HTTP1.0
HTTP/1.1 400 Bad Request
Server: nginx
Date: Wed, 04 May 2022 19:28:32 GMT
Content-Type: text/html
Content-Length: 150
Connection: close

<html>
<head><title>400 Bad Request</title>
</head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
Connection closed by foreign host.

Caché DNS


Debido a la caché DNS de nuestro equipo o nuestro proveedor de internet, podríamos generar un error 400.

El funcionamiento de internet se basa en "traducir" los nombres de dominio a una dirección IP.

Si nos conectamos a la IP incorrecta y le pedimos la web de un dominio que no tiene, el servidor podría devolvernos un código de estado HTTP 400.

Cookies o sesión corrupta


Este error podemos verlo al hacer peticiones en formularios web, por ejemplo.

Ciertos formularios web, como los de los sistemas de envío de correo electrónico, utilizan una característica llamada CSRF, que protege el formulario contra peticiones caducadas o no deseadas.

Si guardamos las cookies de sesión de un sitio web que sirve para enviar mails (un webmail, por ejemplo) mucho tiempo y, después de eso, intentamos enviar un mail, entonces podemos recibir un error 400 causado por este tipo de petición.

En el siguiente ejemplo he editado el código de seguridad que envía el navegador al enviar un email, por lo que al rellenar el formulario me impide enviar el email.

Error 400 bad request producido por petición incorrecta del navegador

Solucionar el error 400 desde nuestro navegador web


Si estamos teniendo el error 400 en un sitio web, debemos pensar que hay algo que no está funcionando correctamente de nuestro lado.

Ya sea un problema de configuración en el navegador o bien una cookie corrupta, lo mejor que podemos hacer es investigar un poco por nuestra cuenta qué hacer para solucionarlo.

Revisar la URL


Dado que escribir una URL incorrecta puede generar un error 400, la solución más sencilla suele ser comenzar por lo más obvio, que es revisar que hemos escrito la URL correctamente en el navegador.

Si la hemos escrito a mano deberemos repasarla minuciosamente, quitando cualquier carácter en que nos hayamos podido equivocar, para subsanar el problema.

Eliminar las cookies del sitio web y borrarlo de la caché del navegador


Dado que una cookie corrupta puede ser el origen del problema del error 400, borrar la información que el navegador tiene almacenada sobre nuestro sitio suele ser uno de los primeros pasos. Podemos borrar las cookies de un sitio web en Firefox de la siguiente forma:

  • Pulsa F12.

  • Ve a la pestaña Almacenamiento.

  • En el apartado "Cookies", haz clic izquierdo sobre la cookie a borrar y pulsa "Borrar todo".


Borrar cookies del navegador en las herramientas de desarrollo del navegador

Si esto no fuera suficiente, entonces podrías forzar un borrado de más contenidos en:

  • Editar

  • Herramientas

  • Privacidad y seguridad

  • Gestionar datos

  • Busca el sitio web y pulsa Eliminar todos los mostrados


Borrar cookies del navegador en las preferencias del navegador

Comprobar la resolución DNS y vaciar la caché de nuestro equipo/navegador


En caso de persistir el problema, podrías probar el vaciado de la caché DNS de tu navegador o equipo.

Todos los navegadores cuentan con un sistema de caché DNS que nos ayuda a cargar más rápidamente las webs, pero puede provocar errores en caso de haber cambios de DNS recientes.

Para borrar la caché DNS en Firefox puedes hacer lo siguiente:

  • Abre una nueva pestaña

  • Escribe 'about:networking'

  • Ve a la pestaña DNS

  • Pulsa Clear DNS Cache


Borrar caché DNS en el navegador web

Si el problema de DNS está en tu equipo, dependerá del sistema operativo que estés usando, pero con limpiar la caché DNS del navegador suele ser suficiente.

Revisar el encabezado de la petición web


Si el paso anterior de revisar la URL no nos soluciona el error, entonces podemos abrir la consola del navegador y analizar la petición que hemos realizado, revisando las cabeceras.

Esta gestión es un poco más avanzada y requiere conocer en profundidad cómo funciona una petición web realizada desde el navegador, qué métodos HTTP están involucrados y cómo funciona por debajo un navegador, por lo que suele utilizarse para depurar el problema.

Conclusiones


Como hemos visto, el error 400 es un error de tipo cliente, es decir, producido porque la aplicación que se conecta al servidor web no está haciendo algo bien, por lo que la solución debe partir de nuestro lado en primera instancia.

En este tipo de situaciones debemos ser nosotros los que, como usuarios, tratemos de buscar la causa del problema revisando nuestros equipos y programas de trabajo habituales.
Fran Rey
Fran Rey

Fran Rey, integrante del equipo de Soporte Técnico de Raiola Networks. Apasionado de Linux, el software libre y su filosofía.

Artículos relacionados

Si te ha gustado este post, aquí tienes otros que pueden ser de tu interés. ¡No dejes de aprender!

Tenemos 2 comentarios en Error 400 Bad Request: ¿Qué es y cómo solucionarlo?
Avatar del autor del comentario

Froylan

22/02/2023 a las 04:30
No puedo acceder a mi dominio, alguien que me pueda ayudar
Responder
Avatar del autor del comentario

Alvaro Fontela

23/03/2023 a las 11:45
Hola Froylan, si estas alojado con nosotros contacta con nuestro departamento de soporte.
Responder

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *