HTTP 405 Method Not Allowed

Indirizzo giusto, verbo sbagliato: la risorsa esiste ma non accetta questo metodo HTTP.

Cosa significa HTTP 405

HTTP 405 Method Not Allowed significa che il server riconosce l'URL ma il metodo HTTP — GET, POST, PUT, DELETE — non è supportato per esso. La risposta deve includere un header Allow che elenca i metodi supportati.

È quasi sempre una discrepanza tra client e API: un modulo che invia POST a una route di pagina, uno script che invia PUT dove l'API si aspetta PATCH, oppure un webhook configurato con il metodo sbagliato.

Cause comuni degli errori 405

  • POST inviata a un endpoint che gestisce solo GET (o viceversa) — tipico dopo aver copiato e incollato esempi di API.
  • Un reindirizzamento (301/302) ha convertito una POST in GET prima che la richiesta raggiungesse l'endpoint.
  • Il server web blocca globalmente metodi come PUT/DELETE mentre l'app se li aspetta.
  • Una route sbagliata: l'endpoint previsto è /api/items (POST), ma la richiesta ha raggiunto /items.

Come risolverlo da sviluppatore

  • Leggi l'header di risposta Allow — elenca esattamente quali metodi accetta l'URL.
  • Controlla la documentazione dell'API per la coppia corretta di metodo e percorso.
  • Se nel percorso c'è un reindirizzamento, usa 307/308 così il metodo sopravvive al passaggio.
  • Sul server, assicurati che la route del framework dichiari il metodo e che nessun proxy lo rimuova.

Esempio di risposta

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

{"error":"method_not_allowed"}

FAQ

Come vedo quali metodi supporta un URL?

Controlla l'header Allow nella risposta 405, oppure invia una richiesta OPTIONS all'URL.

Perché la mia POST si è trasformata in GET?

Un reindirizzamento 301 o 302 nel mezzo ha permesso al client di cambiare metodo. Usa reindirizzamenti 307/308 per gli endpoint che accettano POST.

405 è un problema del client o del server?

Formalmente è un errore del client, ma spesso rivela una configurazione errata del server — una route priva di un metodo o un proxy che blocca i verbi.