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.