HTTP 405 Method Not Allowed

Dirección correcta, verbo incorrecto: el recurso existe pero no acepta este método HTTP.

Qué significa HTTP 405

HTTP 405 Method Not Allowed significa que el servidor reconoce la URL pero el método HTTP — GET, POST, PUT, DELETE — no es compatible con ella. La respuesta debe incluir una cabecera Allow que liste los métodos compatibles.

Casi siempre es un desajuste entre el cliente y la API: un formulario haciendo POST a una ruta de página, un script enviando PUT donde la API espera PATCH, o un webhook configurado con el método incorrecto.

Causas comunes de los errores 405

  • POST enviado a un endpoint que solo maneja GET (o viceversa) — típico después de copiar y pegar ejemplos de API.
  • Una redirección (301/302) convirtió un POST en un GET antes de que la solicitud llegara al endpoint.
  • El servidor web bloquea métodos como PUT/DELETE globalmente mientras la aplicación los espera.
  • Una ruta incorrecta: el endpoint previsto es /api/items (POST), pero la solicitud llegó a /items.

Cómo solucionarlo como desarrollador

  • Lee la cabecera de respuesta Allow — indica exactamente qué métodos acepta la URL.
  • Revisa la documentación de la API para el par correcto de método y ruta.
  • Si hay una redirección en el camino, usa 307/308 para que el método sobreviva al salto.
  • En el servidor, asegúrate de que la ruta del framework declare el método y que ningún proxy lo elimine.

Ejemplo de respuesta

HTTP/1.1 405 Method Not Allowed
Allow: GET, HEAD
Content-Type: application/json

{"error":"method_not_allowed"}

Preguntas frecuentes

¿Cómo veo qué métodos admite una URL?

Revisa la cabecera Allow en la respuesta 405, o envía una solicitud OPTIONS a la URL.

¿Por qué mi POST se convirtió en GET?

Una redirección 301 o 302 intermedia permitió que el cliente cambiara de método. Usa redirecciones 307/308 para endpoints que aceptan POST.

¿405 es un problema de cliente o de servidor?

Formalmente un error de cliente, pero a menudo expone una mala configuración del servidor — una ruta a la que le falta un método o un proxy que bloquea verbos.