Estás intentando colgar un cuadro en tu pared. Tienes un destornillador, pero lo que realmente necesitas es un martillo. Por mucho que lo intentes, ese destornillador simplemente no va a clavar ese clavo en la pared. La herramienta que estás usando no coincide con la tarea que intentas realizar.
Esta es la situación exacta capturada por uno de los códigos de error más específicos y útiles de HTTP: 405 Method Not Allowed
.
A diferencia del más general 404 Not Found
(que dice "No puedo encontrar lo que buscas") o 400 Bad Request
(que dice "No entiendo lo que dices"), el error 405
es increíblemente preciso. Dice: "Encontré el recurso que buscas, pero estás utilizando el método HTTP incorrecto para interactuar con él."
Es la forma en que el servidor te dice: "Sé lo que es /api/users
, pero no puedes ELIMINARLO. Intenta usar GET en su lugar."
Si eres un desarrollador que trabaja con APIs RESTful, comprender el código de estado 405
es crucial para construir y consumir APIs correctamente.
En esta detallada publicación de blog, exploraremos todo lo que necesitas saber sobre el estado 405 Method Not Allowed: qué significa, por qué ocurre, escenarios comunes, cómo solucionarlo y las mejores prácticas para manejarlo con elegancia.
Ahora, exploremos el propósito, la mecánica y las implicaciones prácticas del código de estado HTTP 405 Method Not Allowed.
El Problema: Métodos HTTP y Diseño RESTful
Para entender el 405
, necesitamos revisar rápidamente cómo funcionan las APIs RESTful. En el diseño RESTful, la misma URL puede comportarse de manera diferente según el método HTTP (verbo) que uses:
GET /api/users
- Recuperar una lista de usuariosPOST /api/users
- Crear un nuevo usuarioPUT /api/users/123
- Actualizar el usuario 123 (reemplazo completo)PATCH /api/users/123
- Actualizar parcialmente el usuario 123DELETE /api/users/123
- Eliminar el usuario 123
El error 405
ocurre cuando intentas usar un método que el servidor no ha implementado para ese endpoint específico. Por ejemplo, intentar hacer un POST
a /api/users/123
(que típicamente solo soporta GET, PUT, PATCH, DELETE) probablemente devolvería un 405
.
¿Qué Significa Realmente HTTP 405 Method Not Allowed?
El código de estado 405 Method Not Allowed
indica que el servidor conoce el recurso de destino (la URL que solicitaste) existe, pero no soporta el método HTTP utilizado en la solicitud.
Hay un requisito crucial para una respuesta 405
adecuada: debe incluir un encabezado Allow
que enumere los métodos HTTP que están soportados para el recurso solicitado.
Una respuesta 405
adecuada se ve así:
HTTP/1.1 405 Method Not AllowedAllow: GET, HEAD, OPTIONSContent-Type: application/json
{
"error": "Method Not Allowed",
"message": "POST method is not supported for this endpoint."
}
Analicemos el componente clave:
Allow: GET, HEAD, OPTIONS
: Esta es la parte más importante. Este encabezado le dice al cliente exactamente qué métodos están permitidos. Es como si el servidor dijera: "Aquí no puedes usar un martillo, pero puedes usar estas tres herramientas en su lugar."
En términos sencillos, el cliente envió un método HTTP válido como GET, POST, PUT, DELETE, etc., pero el servidor no permite ese método en particular en la URL o endpoint solicitado.
¿Por Qué Ocurre un Error 405?
Un 405 ocurre cuando el método utilizado en la solicitud HTTP no está permitido para el recurso. Las razones comunes incluyen:
- Llamar a GET en un endpoint que solo soporta POST.
- Usar PUT donde solo se soporta DELETE.
- Enviar solicitudes OPTIONS a recursos que no lo permiten.
- Enrutamiento del servidor o manejadores de métodos HTTP mal configurados.
- Uso incorrecto de la API REST o documentación desactualizada.
Comprender la causa raíz ayuda a solucionar el problema de manera eficiente.
¿Por Qué los Servidores Devuelven 405 en Lugar de 404?
Quizás te preguntes, ¿por qué no simplemente devolver un 404 Not Found?
Bueno, un 404 significa que el recurso no se encuentra en absoluto, pero un 405 significa que el recurso existe, solo que no con ese método.
Esta distinción es importante para los desarrolladores porque te dice:
- Estás en el lugar correcto.
- Simplemente estás usando la herramienta incorrecta.
Cómo Funciona: Un Ejemplo Concreto
Imaginemos un endpoint de API de solo lectura que proporciona información de productos.
La Solicitud Válida:
GET /api/products/123 HTTP/1.1Host: api.example.com
Respuesta del Servidor: 200 OK
con datos del producto.
La Solicitud Inválida:
Un cliente intenta erróneamente actualizar el producto usando PUT:
PUT /api/products/123 HTTP/1.1Host: api.example.comContent-Type: application/json
{"name": "New Product Name"}
La Respuesta 405 del Servidor:
HTTP/1.1 405 Method Not AllowedAllow: GET, HEADContent-Type: application/json
{
"error": "Method Not Allowed",
"message": "The PUT method is not supported for this resource."
}
El encabezado Allow: GET, HEAD
le dice claramente al cliente que este es un endpoint de solo lectura. El cliente ahora sabe exactamente qué salió mal y cómo solucionarlo.
Por Qué el Encabezado Allow es Tan Importante
El encabezado Allow
transforma el 405
de un error frustrante en una conversación útil. Sin él, un cliente se quedaría adivinando:
- Con el encabezado
Allow
: "No puedo hacer PUT aquí, pero puedo hacer GET o usar HEAD." - Sin el encabezado
Allow
: "No puedo hacer PUT aquí. ¯_(ツ)_/¯ ¡Buena suerte averiguando qué puedes hacer!"
Es por eso que la especificación HTTP exige que los servidores incluyan el encabezado Allow
en las respuestas 405
. Es lo que hace que el código sea realmente útil en lugar de simplemente frustrante.
¿Cómo Se Ve una Respuesta 405?
Los servidores responden con el estado 405 junto con un encabezado Allow
que indica los métodos HTTP permitidos. RFC 7231 (especificación HTTP/1.1) instruye que cuando se envía un código de estado 405, el servidor DEBE incluir un encabezado Allow
que enumere los métodos HTTP permitidos para ese recurso.
Ejemplo de respuesta:
textHTTP/1.1 405 Method Not Allowed Allow: GET, HEAD, OPTIONS Content-Type: text/html
<html> <body> <h1>405 Método No Permitido</h1> <p>El método POST solicitado no es compatible con este recurso.</p> </body> </html>
El encabezado Allow
es clave porque informa al cliente qué métodos son aceptables, permitiendo correcciones.
De esta manera, los clientes saben qué métodos son compatibles y pueden ajustar sus solicitudes en consecuencia.
Escenarios Comunes que Desencadenan Errores 405
1. Endpoints de Solo Lectura
Como en nuestro ejemplo anterior, algunos recursos son intencionalmente de solo lectura. Puedes recuperarlos con GET, pero no puedes modificarlos con PUT, PATCH o DELETE.
2. Método Incorrecto para la Acción
Esta es probablemente la causa más común. Los desarrolladores confunden qué método usar para cada acción.
- Usar
GET
para crear un recurso (debería serPOST
) - Usar
POST
para actualizar un recurso (debería serPUT
oPATCH
) - Usar
DELETE
en una URL de colección como/api/users
(debería ser en un recurso específico como/api/users/123
)
3. Implementación de Método Faltante
El diseñador de la API puede simplemente no haber implementado un método particular para un endpoint. Por ejemplo, un endpoint podría soportar GET y POST pero no PUT o DELETE.
4. Firewalls de Aplicaciones Web (WAFs) y Reglas de Seguridad
A veces, las configuraciones de seguridad bloquean intencionalmente ciertos métodos. Por ejemplo, un WAF podría bloquear los métodos PUT, PATCH y DELETE en ciertas rutas por razones de seguridad, devolviendo un 405
.
405 vs. Otros Errores 4xx: Conociendo la Diferencia
Es importante distinguir el 405
de otros códigos de error del cliente.
405 Method Not Allowed
vs.404 Not Found
:
405
significa "Esta URL existe, pero no para ese método."
404
significa "Esta URL no existe para ningún método."
405 Method Not Allowed
vs.501 Not Implemented
:
405
significa "Sé lo que quieres hacer, pero no te permitiré hacerlo para este recurso específico." (Error del cliente)
501
significa "No sé cómo manejar este método HTTP en absoluto, para ningún recurso." (Error del servidor)
405 Method Not Allowed
vs.403 Forbidden
:
405
significa "Esta operación no está disponible para nadie." (Limitación del método)
403
significa "Esta operación está disponible, pero no para ti con tus permisos actuales." (Limitación de autorización)
Escenarios Comunes Donde Aparece el 405
- APIs RESTful: Intentar hacer PUT a un endpoint que solo soporta GET o POST.
- Formularios web: Enviar un formulario con un método GET a un endpoint que espera POST.
- Rutas configuradas incorrectamente: Rutas del servidor que no manejan ciertos métodos adecuadamente.
- Problemas de middleware: Software de seguridad que bloquea o filtra métodos específicos.
- Recursos estáticos: Solicitar POST en una imagen estática o URL de archivo.
Cómo Deben Manejar los Clientes el 405 Method Not Allowed
Cuando los clientes reciben una respuesta 405, deberían:
- Verificar el encabezado
Allow
para identificar los métodos HTTP soportados. - Modificar la solicitud para usar un método permitido.
- Reintentar la solicitud según corresponda.
- Manejar los errores con elegancia en las interfaces de usuario o flujos de trabajo.
- Informar a los usuarios claramente sobre acciones no soportadas.
Cómo Pueden los Desarrolladores Solucionar Errores 405
- Revisar el enrutamiento y la configuración del servidor: Asegurarse de que las rutas manejen todos los métodos HTTP esperados.
- Consultar la documentación de la API: Verificar el uso correcto del método HTTP.
- Implementar manejadores de métodos: Definir manejadores para todos los métodos permitidos explícitamente.
- Responder con encabezados
Allow
adecuados: Mejorar la usabilidad del cliente. - Validar las solicitudes del cliente: Detectar el uso incorrecto del método tempranamente en sus aplicaciones cliente.
- Registrar errores 405: Para monitorear y solucionar problemas recurrentes.
Ejemplos de Métodos HTTP y Uso Permitido
Método HTTP | Caso de Uso Típico |
---|---|
GET | Recuperar recurso o datos |
POST | Crear recurso o realizar acciones |
PUT | Actualizar o reemplazar recurso |
DELETE | Eliminar recurso |
PATCH | Actualizar parcialmente recurso |
OPTIONS | Consultar métodos soportados |
Una falta de coincidencia entre el método y las capacidades del recurso desencadena un 405.
Probando Respuestas 405 con Apidog

Probar que tu API devuelve correctamente un 405
para métodos no soportados es un sello distintivo del desarrollo robusto de APIs. Apidog hace este proceso increíblemente sencillo.
Con Apidog, puedes:
- Prueba Todos los Métodos Fácilmente: Toma cualquier URL de endpoint y cambia rápidamente entre los métodos GET, POST, PUT, PATCH, DELETE con un solo clic para ver cuáles son soportados.
- Valida el Encabezado Allow: Cuando recibas una respuesta
405
, Apidog te mostrará claramente el encabezadoAllow
en los detalles de la respuesta. Puedes verificar que contenga la lista correcta de métodos. - Automatiza las Pruebas de Métodos: Crea suites de prueba que verifiquen automáticamente que los métodos no soportados devuelvan
405
con el encabezadoAllow
adecuado, mientras que los métodos soportados devuelvan el estado2xx
esperado. - Depura Código del Lado del Cliente: Si estás construyendo una aplicación cliente que recibe un
405
, puedes usar Apidog para replicar la solicitud y respuesta exactas, ayudándote a entender y solucionar el problema en tu código cliente. - Documenta el Comportamiento de la API: Usa Apidog para documentar qué métodos son soportados para cada endpoint, haciendo esta información clara para otros desarrolladores que consumen tu API.
En lugar de adivinar, obtienes claridad en segundos. Descarga Apidog gratis y haz que la resolución de problemas de errores HTTP sea sencilla.
Mejores Prácticas para Manejar los 405
Para Desarrolladores de API (Lado del Servidor):
- Incluye siempre el encabezado
Allow
en las respuestas405
. Esto no es opcional para un servidor HTTP compatible. - Sé consistente en el uso de tus métodos a lo largo de tu API. Si la mayoría de los endpoints de colección soportan GET y POST, no tengas uno que solo soporte GET sin una buena razón.
- Proporciona un mensaje de error útil en el cuerpo de la respuesta, especialmente para APIs consumidas por otros desarrolladores.
- Considera usar OPTIONS: Implementa el método OPTIONS para tus endpoints, el cual debería devolver el mismo encabezado
Allow
. Esto da a los clientes una forma de descubrir los métodos soportados sin desencadenar errores.
Para Consumidores de API (Lado del Cliente):
- Verifica el encabezado
Allow
cuando recibas un405
. Te dice exactamente qué puedes hacer en su lugar. - Usa el método OPTIONS para descubrir los métodos soportados antes de intentar otras operaciones.
- Maneja los errores
405
con elegancia en tu código; no los trates como errores fatales, sino como una guía sobre cómo corregir tu solicitud.
El Rol del Método OPTIONS
El método OPTIONS es el primo proactivo de la respuesta 405
. En lugar de intentar una operación y ser rechazado, un cliente puede primero preguntar al servidor qué métodos son soportados:
Solicitud:
OPTIONS /api/products/123 HTTP/1.1Host: api.example.com
Respuesta:
HTTP/1.1 200 OKAllow: GET, HEAD, OPTIONS
Esta es una forma mucho más elegante de descubrir las capacidades de una API sin desencadenar errores.
Solución de Problemas Comunes del 405
- Verifica dos veces las definiciones de ruta y los manejadores de verbos HTTP.
- Revisa las configuraciones de proxy o firewall que puedan bloquear ciertos métodos.
- Busca errores ortográficos o discrepancias en las solicitudes del cliente.
- Usa herramientas de depuración como Apidog para capturar ciclos completos de solicitud/respuesta.
- Prueba en diferentes entornos para detectar problemas específicos de producción.
Implicaciones de Seguridad del 405
El 405 también puede tener implicaciones de seguridad:
- Deshabilitar métodos inseguros (como
TRACE
) ayuda a prevenir ataques. - Revelar demasiado en el encabezado Allow podría dar pistas a los atacantes.
- Un manejo consistente del 405 evita la fuga de detalles del servidor.
Conclusión: De la Frustración a la Claridad
El código de estado 405 Method Not Allowed no es solo un obstáculo aleatorio. Es una señal valiosa de que el recurso existe pero no acepta el método que usaste. El código de estado HTTP 405 Method Not Allowed
es un ejemplo perfecto de cómo un buen diseño de API proporciona retroalimentación clara y accionable. Transforma lo que podría ser un callejón sin salida confuso en una señal útil que dice: "No puedes ir por aquí, pero estas son las rutas que están abiertas para ti."
Para los desarrolladores de API, implementar respuestas 405
adecuadas con encabezados Allow
precisos es una señal de profesionalismo y atención al detalle. Para los consumidores de API, comprender cómo leer y responder a los errores 405
es clave para construir aplicaciones robustas y auto-correctivas.
Así que la próxima vez que encuentres un error 405
, no te frustres, lee el encabezado Allow
. Es el servidor intentando ayudarte a tener éxito. Y cuando estés construyendo o probando APIs tú mismo, una herramienta como Apidog te dará el poder para asegurar que el uso de tus métodos sea correcto y que tu manejo de errores sea tan útil como debería ser.