HTTP 405 Method Not Allowed: cosa significa e come risolverlo

HTTP 405 Method Not Allowed

HTTP 405 Method Not Allowed: cause, header Allow, soluzioni | We.Inc

Perché un server risponde 405, l'header Allow che deve inviare e come risolvere il problema in Flask, Express e Next.js. Crea la risposta 405 corretta per la tua route.

Un 405 Method Not Allowed significa che l'URL esiste ma non accetta il metodo HTTP che hai usato, per esempio un POST inviato a una route che gestisce solo GET. Il server deve elencare i metodi che accetta in un header Allow. Invia uno di quelli, oppure aggiungi sul server un handler per il tuo metodo.

Il 405 a confronto con i codici vicini

Spunta i metodi che la tua route gestisce, scegli il metodo che invia un client, e il builder mostra la risposta esatta che il server dovrebbe restituire: un normale successo, oppure un 405 con un header Allow che elenca i metodi nell'ordine in cui li hai spuntati.

Domande frequenti

Il 405 è un problema del client o del server?

È un codice 4xx, quindi il server contesta la richiesta. O il client deve usare un altro metodo, o chi gestisce il server deve aggiungere il supporto per quello che viene inviato.

Una risposta 405 deve includere l'header Allow?

Sì. La RFC 9110 dice che il server deve generare un campo header Allow che elenca i metodi attualmente supportati dalla risorsa. Un elenco vuoto è ammesso quando la risorsa non accetta nessun metodo.

Perché ricevo un 405 quando invio un form?

Di solito il form invia un metodo che la route non accetta. Una route in Flask, per esempio, risponde solo a GET finché non passi methods=["GET", "POST"] al decorator della route.

Perché Express mi dà 404 invece di 405?

Express tratta allo stesso modo metodo e percorso non corrispondenti: nessuna route ha risposto, quindi la richiesta arriva fino all'handler 404. Aggiungi un catch per il percorso con app.all per inviare tu stesso il 405.

Qual è la differenza tra 405 e 501?

405 significa che questa risorsa rifiuta un metodo che il server conosce. 501 significa che il server non supporta il metodo per nessuna risorsa.

La regola nella specifica

Da dove arriva di solito un 405

Soluzioni per stack

Flask: dichiara ogni metodo che la route accetta

Senza methods=, la route risponde solo a GET (Flask aggiunge HEAD e OPTIONS automaticamente).

Express: invia un vero 405 invece di finire nel 404

app.all dopo gli handler reali intercetta ogni altro metodo per lo stesso percorso.

Route handler di Next.js: esporta il metodo che chiami

app/api/items/route.ts. Una richiesta con un metodo che non hai esportato non può raggiungere il tuo codice.

HTML: dai al form il metodo che il server si aspetta

Un form senza attributo method viene inviato come GET.

Builder di risposte 405

Metodi gestiti da questa route

Metodo inviato dal client

Cosa dovrebbe rispondere il server

Il metodo è supportato, quindi non c'è nessun 405.

Il metodo non è nell'elenco, quindi la risposta è 405 con un header Allow che indica i {n} metodi che hai spuntato.

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito