El error 405: ¿cómo solucionarlo?

Los servidores web informan a los clientes (los navegadores, por ejemplo) sobre el estado de las consultas realizadas con ayuda de códigos de estado HTTP. Existen diferentes códigos para confirmar el éxito o el fracaso de las solicitudes y, entre ellos, también mensajes muy específicos. Mientras que algunos de estos avisos tienen lugar cuando se navega diariamente por la World Wide Web, el error 405 Method Not Allowed se cuenta entre los fallos que rara vez se notifican. A continuación te contamos qué es lo que genera estos mensajes de error y por qué la solución al problema recae en los administradores de las páginas web.

¿Qué se esconde tras el error 405 HTTP?

El Hypertext Transfer Protocol (HTTP) define métodos que designan posibles acciones que se ejecutan en el servidor web contactado. Entre ellos se engloban:

  • GET: extrae los datos vinculados a un recurso de URL determinado
  • HEAD: extrae los datos del encabezado vinculados a un recurso de URL
  • POST: envía datos al servidor web, como datos de formularios
  • PUT: sustituye los datos para un URL determinado por los nuevos que ha facilitado el cliente
  • DELETE: elimina los datos que hay detrás del URL correspondiente

El administrador puede configurar cada servidor web de modo que sea capaz de permitir o denegar cada uno de los métodos. Si la página web carece de contenido interactivo es lógico que no se autorice el método POST, ya que el usuario no tiene la posibilidad ni de introducir sus propios datos ni de enviarlos al servidor web. Si, por el contrario, la página incluye un formulario, el servidor tiene que autorizarlo. De no ser así, se recibirá el mensaje de error status code 405, que informa al navegador y a sus usuarios que el método aplicado no está autorizado, en inglés Method not Allowed.

El texto literal de un mensaje 405 HTTP puede variar en función del servidor, pero algunas de las fórmulas más conocidas son las siguientes:

  • 405 Method Not Allowed
  • 405 Not Allowed
  • Method Not Allowed
  • HTTP 405 Error
  • HTTP Error 405 – Method Not Allowed
  • HTTP 405 Method Not Allowed
  • Error: 405 Method Not Allowed
  • 405 – HTTP verb used to access this page is not allowed
  • HTTP Status 405 – HTTP method GET is not supported by this URL

¿En qué situaciones se produce el error 405?

Al comienzo de nuestro artículo ya se ha indicado que el 405 error es un fallo que puede atribuirse a un problema del lado del servidor. No obstante, esto no parece tener sentido pues el status code 405 es concebido desde un punto de vista técnico como uno de los mensajes de error del cliente (códigos con el patrón 4xx). Sin embargo, esta contradicción se entiende fácilmente de la siguiente manera: si, como usuario de un navegador, envías una petición al servidor web con un método HTTP que este no autoriza debido a su configuración, desde el punto de vista del servidor el error reside en el lado del cliente, que habría realizado, según él, una pregunta incorrecta. El servidor, al procesar esta petición, no sabe que solo quieres acceder a la página web para rellenar un formulario.

En concreto, tres son las situaciones que pueden dar lugar al HTTP 405 code:  

  1. La prohibición del método HTTP correspondiente tiene su origen en una configuración errónea del servidor web o de los componentes de software encargados de ejecutar la acción correspondiente para el recurso de URL deseado.
  2. El webmaster ha previsto la prohibición del método HTTP, en la mayoría de los casos por motivos de seguridad. El error reside en un recurso de URL del proyecto web en cuestión que, a causa de su programación, solicita el método no autorizado.
  3. El proveedor de hosting del administrador de la página web no autoriza el método HTTP, lo que puede ocurrir con el método POST, necesario para la introducción de datos y, que en el caso de algunos proveedores, está bloqueado a la hora de acceder a documentos HTML por motivos de seguridad.

Error 405 Method Not Allowed: ¿cómo se soluciona el problema?

Si te encuentras un proyecto web que muestra mensajes de error 405, existen muy pocas posibilidades de que puedas solucionar el problema. Mientras que otros mensajes de error de HTTP pueden solventarse con trucos como actualizar la página, reiniciar el router o comprobar la configuración del proxy, estas medidas no surten efecto ante el error 405 Not Allowed. En cualquier caso, es importante ponerse en contacto con el webmaster o el administrador de la página web responsable para informarle del problema o para obtener información más precisa sobre las causas del mismo.

Si eres el responsable de una página que muestra a los usuarios el 405 HTTP code, la situación es algo distinta, por lo que en función de la causa del mensaje de error 405 existen diversas posibilidades para solucionar el problema. Para no incomodar a los usuarios y evitar las penalizaciones de los buscadores, lo más recomendable es corregir el error 405 Method Not Allowed lo antes posible.

Solución nº 1: desbloquear el método HTTP

Si no estás seguro de la causa del aviso 405 Method Not Allowed, el primer paso es echar un vistazo a la configuración de los componentes de software que se ocupan de dar respuesta a las solicitudes HTTP. Normalmente, los responsables del problema pueden ser el servidor web, un proxy antepuesto o un controlador HTTP (en aplicaciones ASP.NET) si el método no está desbloqueado. Debido a que las aplicaciones se diferencian entre sí en su configuración, es conveniente informarse sobre cómo funciona la activación o desactivación de los métodos HTTP en el software en cuestión.

En los servidores web Apache se pueden definir los métodos que se autorizan con ayuda del módulo mod_allowmethods, el cual puede controlarse mediante la directiva AllowMethods dentro de los contenedores <Location>, necesarios para determinar la configuración de uno o varios URL. Una configuración que permita tanto el acceso a los recursos como la entrada de datos en la parte del cliente puede establecerse de la siguiente manera:

<Location "/">
  AllowMethods GET POST OPTIONS
</Location>
Nota

En versiones más antiguas de Apache se definen los métodos HTTP autorizados por medio de las directivas <Limit> y <LimitExcept>.

Solución nº 2: corregir el código fuente

Si has bloqueado un método HTTP deliberadamente para, por ejemplo, garantizar la seguridad de la página web, un procedimiento frecuente en el método PUT, pero sin embargo el cliente ha realizado una petición para consultar los recursos de URL, el problema recae en que la programación de la página web contiene errores. La página visitada o el elemento solicitado están erróneamente vinculados con el método, por lo que el error 405 es la consecuencia lógica. La solución estriba en este caso en localizar el código problemático en el respectivo documento HTML y reemplazar el método hasta ahora registrado por el método de petición adecuado. Si la configuración del servidor y el código fuente vuelven a estar coordinados, lo más probable es que el error 405 HTTP también desaparezca de las ventanas del navegador de los visitantes.

Solución nº 3: evitar el bloqueo de seguridad del proveedor

Como ya se ha mencionado, la causa del error HTTP 405 Method Not Allowed puede ser que el proveedor de hosting desactive el método HTTP correspondiente para determinados tipos de MIME, como por ejemplo los documentos HTML, por motivos de seguridad. En estas situaciones se puede contactar con el proveedor y solicitarle el desbloqueo, pero si no fuera posible, existen algunos trucos para utilizar el método en tu proyecto web.

De esta manera puedes entregar la página web con otro tipo de MIME para el que el método esté disponible y así evitar el bloqueo. POST se desactiva principalmente para páginas HTML, pero sin embargo funciona en documentos PHP. Si modificas la extensión (terminación) y cambias el tipo de documento web de ejemplo index.html por index.php, tendrás la posibilidad de resolver el 405 HTTP code.

Otro truco consiste en implementar la página web que ocasiona el error como contenido de la página de error 405. Guarda la página en cuestión en un directorio separado y defínela en el archivo de configuración como 405 error oficial:

ErrorDocument 405 /PathToFile/example.html

Esta solución tiene, sin embargo, la desventaja de que todas las visitas que se hagan a la página serán consideradas como error, lo que dificulta el análisis estadístico.