¿Te ha gustado el artículo?
0
¿Te ha gustado el artículo?
0

El error HTTP 400 Bad Request: aprende a solucionarlo

Navegar por Internet no siempre transcurre como debería, y de vez en cuando el navegador muestra un código de estado en lugar del contenido que se buscaba. En el establecimiento de la comunicación entre el servidor web y el cliente (el navegador), se transmiten mensajes de estado y solo cuando surge un problema la ventana del navegador web muestra un mensaje de error más o menos críptico. El mensaje de error HTTP 400 indica que hay algo que no ha funcionado bien en la petición del cliente. En el presente artículo te contamos cuál es el verdadero significado del error 400 Bad Request y qué puedes hacer para solucionarlo.

¿Qué significa el error 400 Bad Request?

Con los códigos de estado, un servidor web es capaz de devolver al cliente el estado actual de las solicitudes. Si el servidor entrega el mensaje 200 (normalmente imperceptible cuando se navega por Internet), esto indica que todo funciona bien, lo que significa que la solicitud se ha realizado con éxito y que se han transmitido los contenidos deseados. Sin embargo, no ocurre lo mismo con los códigos de la clase 4XX y 5XX, que indican la presencia de diferentes tipos de errores.

Los códigos del 100 al 103 hacen referencia a procesos en funcionamiento y los relativos al 200 (200-208) a procesos finalizados con éxito. Por lo general, estos pasan desapercibidos para los usuarios de Internet del mismo modo que los errores de la clase 3XX (300-308), que indican que la comunicación se ha llevado a cabo correctamente pero el cliente ha de intervenir yendo un paso más allá. En la mayoría de los casos se trata de redirecciones que el navegador realiza automáticamente y que los usuarios apenas perciben.

Todo lo contrario ocurre con los mensajes de error: mientras que los del grupo 500 están relacionados con los errores que tienen lugar del lado del servidor, los del grupo 400 se reducen a peticiones incorrectas del lado del cliente. El más conocido es el error 404 Not Found, cuya causa suele ser una dirección URL incorrecta o contenidos eliminados.  

En el caso del error HTTP 400 no es fácil dilucidar por qué se ha producido, si bien básicamente algo ha ido mal en la petición. El protocolo de Internet HTTP no se ha cumplido de manera correcta, al menos según el servidor web, por lo que la petición no puede procesarse. Como consecuencia, el servidor la ha interpretado como errónea o dañina y ha impedido la entrega de la página. En este sentido, las causas del mensaje de error suelen estar, por lo general, relacionadas con el navegador empleado o se pueden atribuir a un error por parte del usuario:

  • Dirección URL incorrecta: al igual que el error 404, un error 400 Bad Request se produce cuando los usuarios introducen una dirección incorrecta y, por ejemplo, insertan caracteres especiales ilícitos. 
  • Cookies con errores: el error 400 también puede surgir cuando las cookies de un navegador están obsoletas o contienen errores.
  • Registros DNS obsoletos: puede que la caché del DNS contenga archivos que remitan a direcciones IP falsas.
  • Archivos muy grandes: cuando se intenta cargar archivos muy grandes, el servidor puede negarse a aceptarlos, lo que también es considerado como un error HTTP 400.
  • Encabezados muy largos: durante la comunicación, el cliente y el servidor utilizan encabezados en los que se define la petición y algunos servidores web establecen un límite mayor para la longitud de estos encabezados.  

Con el error Bad Request 400 tampoco es sencillo deducir directamente en qué punto de la comunicación ha surgido el problema. En caso de usar un servidor web IIS 7.0, IIS 7.5 o IIS 8.0, se pueden extraer ciertos datos del código de estado:

  • 400.1: destination header inválido
  • 400.2: depth header inválido
  • 400.3: if header inválido
  • 400.4: overwrite header inválido
  • 400.5: translate header inválido
  • 400.6: request body inválido
  • 400.7: longitud del contenido inválida
  • 400.8: timeout inválido
  • 400.9: lock token inválido

El error 400 no solo aparece cuando se utiliza un navegador, sino que hay otros programas, como los clientes de correo electrónico, que también pueden recibir este código de estado a la hora de comunicarse con un servidor.

Solucionar el 400 Bad Request

Como ocurre con la mayoría de códigos de estado que muestran un mensaje de error, en muchos casos es suficiente con refrescar la página. Puede que el problema sea temporal si es la primera vez que el error aparece en una página que normalmente no suele presentar ningún fallo, pero si el error persiste una vez actualizada la página, puede que la solución sea borrar la caché del navegador. Es posible también que el navegador web haya guardado una copia en el momento en el que ha aparecido el mensaje de error.

Dirección URL incorrecta

El siguiente paso para el análisis del problema debe ser revisar la dirección URL: en caso de que tú mismo hayas insertado la dirección en la línea del navegador, es recomendable que compruebes que no haya ningún error ortográfico. Si has pinchado en un enlace, ahí mismo puedes comprobar la ortografía o ir primero a la página principal y acceder desde ahí a la subpágina deseada.

Cookies con errores

El problema también puede deberse a la presencia de cookies obsoletas o que contengan errores. Para solucionarlo se debe eliminar el registro correspondiente en el navegador y cuando se vuelve a visitar la página, el software deposita una cookie nueva.

Hecho

En las cookies se guarda la información sobre la visita a una página web para que el servidor web sepa que ya se ha visitado esa página y conozca los ajustes que se han realizado. La ley de cookies europea  protege la privacidad de los usuarios de Internet con respecto al uso de las cookies.

Registros DNS erróneos

Otra posible solución a la que se puede recurrir en caso de que aparezca el error 400 es la de eliminar la memoria caché del DNS. Cuando se navega por Internet, los nombres de dominio introducidos se traducen en direcciones IP, pues solo de esta manera se puede establecer la conexión en la World Wide Web. Para ello se tiene que realizar la resolución de nombres en el servidor de nombres y, para acortar el proceso, el ordenador en cuestión almacena temporalmente en la caché DNS los datos recopilados. Pero si el registro en la caché no se elimina automáticamente, la próxima vez que introduzcas el dominio en el navegador la resolución de nombres tendrá lugar directamente desde la caché. Si la entrada está defectuosa o desactualizada aparecerá el mensaje “HTTP Bad Request”. Para eliminar la entrada defectuosa se debe borrar la caché DNS completa, lo que se puede lograr en Windows a través del símbolo del sistema introduciendo el siguiente comando:

                ipconfig /flushdns

En los sistemas Mac el comando depende de la versión del sistema operativo. Introduce el correspondiente en el terminal:

  • OS X 10.4 (Tiger): lookupd -flushcache
  • OS X 10.5 (Leopard): dscacheutil -flushcache
  • OS X 10.6 (Snow Leopard): dscacheutil - flushcache
  • OS X 10.7 (Lion): sudo killall -HUP mDNSResponder
  • OS X 10.8 (Mountain Lion): sudo killall -HUP mDNSResponder
  • OS X 10.9 (Mavericks): dscacheutil -flushcashe; sudo killall -HUP mDNSResponder
  • OS X 10.10 (Yosemite) (10.10.1 – 10.10.3): sudo discoverutil udnsflashcaches
  • OS X 10.10 (Yosemite) (10.10.4+): sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
  • OS X 10.11 (El Capitan): sudo killall -HUP mDNSResponder
  • macOS 10.12 (Sierra): sudo killall -HUP mDNSResponder

Problemas con los campos del encabezado HTTP

Para usuarios: eliminar las cookies y reiniciar el navegador

El error HTTP 400 también aparece cuando el encabezado HTTP es muy largo. Aunque en principio no existe límite de tamaño, puede darse el caso de que el servidor de destino sí haya fijado uno. El encabezado está formado por varios campos en los que se definen las solicitudes y las respuestas y cuando ambos participantes en la comunicación han comparado los parámetros, pueden intercambiar los datos requeridos. En caso de que esto no funcione, aparece un mensaje de error. Puesto que se trata de una comunicación entre el navegador y el servidor web y los Bad Request 400 surgen debido a problemas con el cliente, es probable que el navegador sea el responsable. En este sentido, la mejor manera de comprobar si el navegador estándar es el causante del problema es utilizando otro navegador temporalmente. 

Si se puede visualizar la página en este otro navegador, vuelve a cambiar a tu navegador preferido y elimina las cookies en caso de que todavía no lo hayas hecho. Esta vez, sin embargo, no se eliminan las defectuosas, sino todas (por seguridad). La razón para ello es que las cookies se añaden en el encabezado y así es como el servidor web obtiene información de la visita anterior. En caso de que el navegador tenga que incorporar muchas entradas en la petición, puede que se sobrepase el límite de longitud del encabezado.

Si esta solución no surte efecto, es recomendable volver a instalar el navegador o restaurar los valores predeterminados, para lo que se puede optar por distintas vías en función del navegador. En Firefox, por ejemplo, se puede introducir about:support para solucionar el error, obteniendo también información detallada que te puede ayudar a detectar errores en el software. Estos datos son importantes incluso si te pones en contacto con un equipo de soporte técnico. Puedes optar también por otra opción: en la página del navegador hay un botón que permite “Restablecer Firefox” y con un solo clic se puede guardar la configuración y borrar posteriormente las extensiones y los ajustes.

En las opciones de Internet de Internet Explorer aparece el botón “Restablecer” en la pestaña “Opciones avanzadas” y “Restablecer configuración de Internet Explorer” en el caso de Internet Explorer 6. El navegador de Microsoft también ofrece la posibilidad de borrar los ajustes personales al restablecer el sistema y puesto que también considera que la caché y las cookies son parte de los ajustes, es recomendable eliminarlos.

En Chrome la función para restaurarlo se encuentra en los ajustes del sistema. El navegador almacena los datos personales de los usuarios como, por ejemplo, las contraseñas y el historial, y luego lo restaura todo y lo devuelve a su estado original. Cierra el navegador y reinícialo para que se apliquen los cambios.

Para webmasters: ampliar los límites

Si eres un webmaster y hay visitas que se han quejado de la presencia del error HTTP code 400, puede ser de ayuda modificar los ajustes del servidor. Para que los usuarios no tengan que recibir este mensaje de error debido a un encabezado HTTP de gran tamaño, puedes ampliar el límite, pero teniendo en cuenta que con unos límites más amplios también puede aumentar el riesgo de recibir peticiones con errores. La Internet Engineering Task Force (IETF) aborda el código de error 400 en su documentación sobre HTTP 1.1 y advierte del riesgo que suponen los límites amplios (smuggling attacks):

Cita

“A server that receives a request header field, or set of fields, larger than it wishes to process MUST respond with an appropriate 4xx (Client Error) status code. Ignoring such header fields would increase the server's vulnerability to request smuggling attacks (Section 9.5).” Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing

¿Quieres aumentar el límite pese a todo? Para ello cada servidor web tiene un método diferente. En el caso del IIS (con ASP.NET) modifica, por ejemplo, “maxRequestLength” y “maxAllowedContentLength”. En Apache puedes fijar los límites con “LimitRequestFieldSize”.

Toma de contacto

En ocasiones puede ocurrir que ninguna de las soluciones anteriores resuelve el problema. En ese caso se debe buscar otro tipo de ayuda. Para ello tienes dos posibilidades de contacto en función de si el error 400 aparece en una página determinada, en varias o en todas las páginas. Si el error solo se origina en una página determinada y hasta ahora todos los intentos por solventarlo han sido en vano, puedes ponerte en contacto con el webmaster de la página. Por otro lado, en aquellos casos en los que ya no puedas navegar por Internet de manera habitual, debido a la presencia permanente del error code 400, debes comunicarte con tu proveedor de Internet, puesto que, aun si el problema no proviene realmente de dicho proveedor, el equipo de asistencia técnica puede ayudarte a encontrar una solución.

En ambas situaciones se recomienda aportar a las personas de contacto la mayor cantidad de información posible. Esto incluye, por un lado, todos los intentos realizados hasta la fecha para solucionar el problema y, por el otro, datos de interés sobre tu sistema como:

  • el sistema operativo y el navegador que utilizas
  • si has instalado extensiones para el navegador
  • si utilizas un cortafuegos o te conectas a Internet mediante un proxy

Toda esta información ayuda tanto al equipo de asistencia técnica como al webmaster a solventar el problema para que puedas volver a navegar por Internet sin complicaciones con la mayor celeridad posible sin que se aparezca el error HTTP 400.

Protocolos HTTP