Si alguna vez te has encontrado con el error HTTP 405 - Método No Permitido, probablemente te has preguntado qué significa y cómo solucionarlo. Este código de estado indica que el servidor ha recibido una solicitud con un método HTTP que no está permitido para el recurso solicitado. 🚀
El código de estado 405 (Method Not Allowed) es una respuesta del servidor que indica que el método HTTP utilizado en la solicitud no es aceptado para el recurso en cuestión. Aunque el cliente ha realizado una petición válida, el servidor rechaza el método específico empleado (como GET
, POST
, PUT
, DELETE
, etc.).
Imagina que estás desarrollando una API y defines un endpoint que solo permite solicitudes GET
. Sin embargo, si alguien intenta hacer una solicitud POST
a ese mismo endpoint, el servidor responderá con un 405 Method Not Allowed.
POST /api/usuarios HTTP/1.1
Host: ejemplo.com
🔽 Respuesta del servidor:
HTTP/1.1 405 Method Not Allowed
Allow: GET
Como se observa, el servidor informa que solo se permite el método GET
para ese recurso.
Para solucionar este error, primero debemos identificar su origen. Aquí te dejo las causas más comunes:
Si un recurso solo admite ciertos métodos (como GET
o POST
), pero el cliente usa otro (como PUT
o DELETE
), el servidor responderá con un error 405.
Algunos servidores (como Apache, Nginx o IIS) pueden bloquear ciertos métodos HTTP por configuración. Si un administrador ha deshabilitado un método en particular, el servidor responderá con un código 405.
El propio código de la aplicación puede estar programado para aceptar únicamente ciertos métodos. Por ejemplo, un framework como Django, Laravel o Express.js puede rechazar métodos no definidos en las rutas.
.htaccess
En servidores Apache, el archivo .htaccess
puede estar configurado para rechazar ciertos métodos HTTP, generando así el error 405.
Un firewall o un proxy mal configurado podría estar bloqueando ciertos métodos HTTP, lo que causaría este error.
Algunos servidores incluyen un encabezado Allow
en la respuesta, indicando qué métodos están permitidos:
HTTP/1.1 405 Method Not Allowed
Allow: GET, POST
Si ves este encabezado en la respuesta del servidor, usa solo los métodos permitidos.
Si usas Apache, revisa el archivo de configuración (httpd.conf
) o .htaccess
y asegúrate de que los métodos correctos están permitidos.
Ejemplo en Apache para permitir POST
y GET
:
<Directory "/var/www/html">
<LimitExcept GET POST>
Deny from all
</LimitExcept>
</Directory>
Si usas Nginx, revisa la configuración del bloque location
:
location /api/ {
limit_except GET POST {
deny all;
}
}
Si usas un framework como Express.js (Node.js), revisa cómo estás definiendo las rutas:
app.get('/usuarios', (req, res) => {
res.send('Lista de usuarios');
});
// Si intentas hacer un POST a /usuarios, devolverá 405 porque no está definido
Para permitir POST
, agrega la ruta correspondiente:
app.post('/usuarios', (req, res) => {
res.send('Usuario creado');
});
.htaccess
Si usas Apache, revisa que .htaccess
no esté bloqueando métodos específicos.
Por ejemplo, esta configuración bloquearía todos los métodos excepto GET
y POST
:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_METHOD} !^(GET|POST)$
RewriteRule .* - [R=405,L]
</IfModule>
Si necesitas permitir otros métodos, agrégales a la condición.
Si sospechas que un firewall o proxy está bloqueando ciertos métodos HTTP, revisa sus reglas y asegúrate de que no estén impidiendo el uso de métodos válidos.
El error HTTP 405 Method Not Allowed suele ser una señal de que el método HTTP que estás usando no está permitido para el recurso solicitado. Para solucionarlo, debes revisar la configuración del servidor, las reglas de .htaccess
, la lógica de la aplicación y posibles restricciones en firewalls o proxies.
Si sigues estos pasos, ¡seguro que podrás solucionar el problema rápidamente! 😃
Jorge García
Fullstack developer