Hostwinds Blog
Resultados de búsqueda para:
Cada código de estado HTTP cuenta una historia sobre lo que está sucediendo entre un cliente (por ejemplo, navegador web) y un servidor.Algunas historias son simples;200 significa éxito, 404 significa que la página no existe.Pero cuando ves el método 405 no permitido, la historia es un poco más interesante.
Desglosemos lo que significa el error 405, por qué sucede y cómo solucionarlo
El método 405 no permitido la respuesta ocurre cuando un cliente (como su navegador o una herramienta API) hace una solicitud utilizando un método HTTP que el servidor no permite ese recurso.
Por ejemplo:
El detalle importante es que la página que está intentando alcanzar existe, pero el servidor no lo permite el método de solicitud utilizado para interactuar con ella.
El error 405 no siempre tiene una única causa obvia.Puede provenir de la forma en que se realiza una solicitud, cómo se configura el servidor o incluso de capas de seguridad adicionales en su lugar.Estas son las situaciones más comunes que lo activarían:
Cada recurso en un servidor está configurado para aceptar ciertos métodos HTTP.Por ejemplo:
Un escenario común es cuando un desarrollador envía un CORREO Solicitud a una URL que solo fue diseñada para manejar CONSEGUIR.El servidor reconoce el recurso, pero dado que el método no es compatible, responde con 405.
Esta es una de las causas más frecuentes, especialmente cuando se trabaja con formularios, API o scripts que interactúan con los servicios web.
Los servidores web como Apache, Nginx e IIS brindan control a los administradores sobre el cual están permitidos los métodos HTTP.Las directivas de configuración como el límite de Apache o Limit_Except de Nginx pueden bloquear explícitamente ciertos verbos.
Por ejemplo:
Esto a menudo puede suceder después de los cambios en .htaccess archivos, bloques de servidor o configuración de filtrado de solicitudes de IIS.Incluso una pequeña directiva tipográfica o por alto puede dar como resultado que los métodos estén bloqueados involuntariamente.
Las API están diseñadas con reglas de método estricto.En una API RESTful, diferentes verbos HTTP generalmente corresponden a acciones específicas:
Si un desarrollador llama a un punto final con el método incorrecto, como enviar un PONER a una URL que solo permite CORREO, el servidor responde con un 405.
Esto es intencional, ya que las API están destinadas a aplicar patrones de interacción consistentes.Por ejemplo, la API de Github no te dejará BORRAR Un repositorio por error a través de una llamada de método incorrecto, requiere el verbo correcto, o obtendrá una respuesta 405.
Los formularios web y las solicitudes de JavaScript (AJAX) son otra fuente común de 405 errores:
Dado que los navegadores manejan la forma y los envíos de AJAX automáticamente, incluso un pequeño desajuste en la forma en que se codifica una solicitud en comparación con cómo el servidor espera que pueda activar este error.
Los principiantes a menudo encuentran esto cuando aprenden a configurar formularios en PHP o cuando trabajan con Frontend Frameworks que hacen llamadas API.
Incluso cuando un servidor está configurado correctamente, las capas de seguridad pueden intervenir y bloquear las solicitudes.Los ejemplos incluyen:
En estos casos, el servidor en sí podría admitir el método, pero la solicitud se intercepta antes de llegar a la aplicación.Esto a menudo lleva a la confusión porque los registros pueden mostrar que el servidor "rechazar" el método cuando en realidad es una capa de seguridad que realiza el filtrado.
A primera vista, el error 405 se puede confundir con Otros errores de cliente y servidor.Pero los detalles son importantes, y conocer las diferencias lo ayudarán a diagnosticarlo correctamente.
Puede ser difícil diagnosticar el 405 porque el servidor reconoce que el recurso existe, pero se niega a procesar la solicitud de la forma en que se envió.Para rastrear la causa raíz, ayuda a resolver el problema paso a paso.
Cuando un servidor devuelve un 405, la respuesta debe incluir un listado de encabezado permitido qué métodos son compatibles con ese recurso.Esta es la forma del servidor de decir: "No puedes hacer eso, pero esto es lo que puedes hacer".
Ejemplo:
HTTP/1.1 405 Method Not Allowed
Allow: GET, POST
Los registros son a menudo la forma más rápida de descubrir la causa, ya que generalmente darán una explicación directa de por qué la solicitud fue rechazada y confirma que no es un problema de conectividad más profundo.
Los registros pueden mostrar entradas como:
client sent an unsupported method (PUT) to /index.php
Herramientas como rizo o Cartero son invaluables para confirmar qué métodos funcionan realmente.La prueba de puntos finales de esta manera descarta conjeturas y le brinda una visibilidad clara sobre cómo el servidor responde a diferentes solicitudes.
Usando curl:
curl -i -X GET https://example.com/resource
curl -i -X POST https://example.com/resource
curl -i -X PUT https://example.com/resource
Postman ofrece una interfaz visual donde puede alternar los métodos de solicitud y ver instantáneamente las respuestas, por lo que es más amigable para principiantes.
Si el servidor permite el método pero aún obtiene un 405, el problema puede estar en su código de aplicación.
Formularios: Asegúrese de que el atributo del método del elemento <formulario coincida con lo que el servidor espera.Ejemplo:
<form action="/submit" method="post">
Ajax/buscar: Verifique que el método de solicitud se establezca correctamente en JavaScript:
fetch('/api/data', {
method: 'POST'
})
Nota: Este paso es a menudo donde los principiantes son tropezados, enviando datos al punto final correcto pero con el verbo incorrecto.
Si tanto los encabezados como el código se ven bien, el problema puede ser restricciones a nivel de servidor.Los administradores a menudo bloquean los métodos por razones de seguridad, pero si se detienen las solicitudes legítimas, es necesario ajustar estas configuraciones.
Apache: Busque directivas Limit o Limitexcept en su .htaccess o configuración principal.Ejemplo:
<Limit GET POST>
Require all granted
</Limit>
Nginx: Verifique las directivas Limit_Except:
location /api/ {
limit_except GET POST {
deny all;
}
}
La reparación de un error 405 depende de la plataforma o entorno en el que se ejecuta su sitio web o aplicación.Dado que cada tipo de servidor y sistema de administración de contenido manejan las solicitudes HTTP de manera diferente, la solución puede variar.Revisemos algunas plataformas comunes y atraviesemos los pasos que podemos tomar para revisar las configuraciones y ajustar la configuración para que se permitan los métodos HTTP correctos.
1.Producir el error y leer encabezados
curl -i -X PUT https://example.com/path
2. Si ve que lo permite, ajuste su solicitud/cliente para que coincida.Si no lo hace, continúe a continuación.
1.Colle la configuración
2. Realice una copia de seguridad del archivo que editará
sudo cp /etc/apache2/sites-available/site.conf /etc/apache2/sites-available/site.conf.bak
3. Buscar restricciones de métodos
# Example: only GET/POST allowed here
<LimitExcept GET POST>
Require all denied
</LimitExcept>
4. Agregue los métodos necesarios o elimine el bloque restrictivo
<LimitExcept GET POST PUT>
Require all denied
</LimitExcept>
5. Validar y recargar
sudo apachectl -t
sudo systemctl reload apache2 # or: sudo systemctl reload httpd
6. Vuelva a probar con curl
curl -i -X PUT https://example.com/path
7. Si aún se bloquea, verifique las capas de seguridad (por ejemplo, registros de auditoría MOD_SECURITY) y prioridad virtualhost.
1. Abre el bloque del servidor para su sitio
2. Realice una copia de seguridad del archivo
sudo cp /etc/nginx/sites-available/site.conf /etc/nginx/sites-available/site.conf.bak
3. Busque Limit_except bloques
location /api/ {
limit_except GET POST {
deny all;
}
}
4. Agregue los métodos necesarios o retire el bloque si es innecesario
location /api/ {
limit_except GET POST PUT {
allow all;
}
}
5. Prueba y recarga
sudo nginx -t
sudo systemctl reload nginx
6. Vuelva a probar con curl
curl -i -X PUT https://example.com/api/resource
7. Si está proxy a un servidor de aplicaciones, confirme que Upstream también permite el método.
<system.webServer>
<handlers> ... </handlers>
<security>
<requestFiltering>
<verbs>
<!-- Remove Deny for verbs you need -->
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
</system.webServer>
6. Recicla el grupo de aplicaciones o reinicie el sitio.
7. Vuelva a probar con curl/postman.
1. Confirmar el contrato
2, sondea el punto final
# Discover allowed methods (if supported)
curl -i -X OPTIONS https://api.example.com/v1/items/123
# Then try the method you intend
curl -i -X PATCH https://api.example.com/v1/items/123
3. Arregle el cliente o servidor (ejemplos)
app.post('/items', createItem);
app.put('/items/:id', updateItem);
// If PUT not defined, add it—or switch your client to POST if that's the design.
@app.route('/items/<id>', methods=['GET','POST','PUT','DELETE'])
def item(id): ...
4. Establezca un 405 útil con el encabezado permitido (lado del servidor)
5. Si está liderado por una puerta de enlace API/WAF, revisar las reglas de filtrado del método allí también.
6. Vuelva a probar con Postman/Curl y confirme el flujo esperado 2xx/3xx/4xx.
Arreglar un error 405 cuando parece es solo la mitad del desafío: prevenirlo de nuevo es lo que le ahorra tiempo y frustración a largo plazo.Al colocar las prácticas correctas durante el desarrollo y la configuración, puede reducir las posibilidades de que los usuarios o aplicaciones se encuentren con métodos no respaldados.Aquí hay varios enfoques que ayudan a evitar que 405 errores se conviertan en problemas recurrentes.
Al escribir formularios, scripts o llamadas API, verifique que solo esté utilizando los métodos HTTP que el servidor permite.Por ejemplo, si su servidor acepta una publicación para enviar datos, asegúrese de no usar accidentalmente GET o PUT.Los métodos de validación temprano en el desarrollo también ayudan a captar errores antes de alcanzar la producción.Muchos marcos le permiten definir métodos permitidos directamente en rutas o controladores, lo que facilita la aplicación del uso correcto.
Los servidores a menudo tienen restricciones de métodos definidas en sus archivos de configuración (como .htaccess, nginx.conf o configuración de puerta de enlace de la API).Mantener un registro de qué métodos son compatibles facilitan tanto a los desarrolladores como a los administradores comprender los límites.Esta documentación es especialmente útil en equipos más grandes o proyectos a largo plazo, donde las reglas del servidor pueden perderse o olvidarse con el tiempo.
Incluso con una planificación cuidadosa, las solicitudes de métodos no compatibles pueden pasar.Es por eso que es útil proporcionar mensajes de error claros cuando ocurre un 405.En lugar de un "método no permitido" vago, personalice la respuesta para que el usuario o desarrollador comprenda lo que salió mal y cómo corregirlo, por ejemplo, incluido la lista de métodos permitidos en el encabezado de respuesta o sugiriendo el método correcto en su documentación.
Si está construyendo API, mantener las mejores prácticas y los estándares HTTP facilitan que los clientes sepan qué esperar.Por ejemplo, si diseña un punto final para actualizar un recurso, use Put o Patch de manera consistente.Esta previsibilidad reduce el riesgo de que se envíen métodos no compatibles y ayuden a los desarrolladores externos a interactuar correctamente con su API.
El error del método 405 no permitido le dice que el servidor sabe que el recurso existe, pero no permite el método que probó.
La conclusión clave: Verifique el encabezado de permitir, revise los registros y asegúrese de que sus reglas de código y servidor coincidan con los métodos que tiene la intención de admitir.
Escrito por Hostwinds Team / agosto 27, 2025