Come risolvere l'errore 405 – Method not allowed
I web server utilizzano i codici di stato HTTP per informare i client, come ad esempio i browser, sullo stato di lavorazione delle richieste inviate. Sono diversi i codici che servono a segnalare il successo o l'insuccesso di una richiesta e alcuni di essi sono messaggi molto specifici. Mentre alcuni sono piuttosto frequenti e vengono comunicati di continuo agli utenti del World Wide Web, l'errore 405 (Method not allowed) è una notifica abbastanza rara. In questo articolo vi spieghiamo esattamente cosa comporta questo messaggio di errore e perché la sua soluzione spetta al gestore del sito web.
- Certificato SSL Wildcard incluso
- Registrazione di dominio sicura
- Indirizzo e-mail professionale da 2 GB
Che cosa significa l'errore HTTP 405?
L'Hypertext Transfer Protocol (HTTP) definisce i metodi che indicano le azioni che si possono eseguire sul server web contattato. I seguenti sono alcuni tra i metodi più utilizzati:
- GET: richiesta di informazioni associate a uno specifico URL
- HEAD: richiesta di informazioni dell'header associate a un URL
- POST: invio di dati al web server (es. dati dei moduli)
- PUT: sostituzione dei dati di un URL specifico con dati nuovi trasmessi dal client
- DELETE: eliminazione dei dati nel rispettivo URL
L'amministratore può configurare un web server in modo che permetta o meno ognuno dei singoli metodi. In assenza di contenuti interattivi sul sito, ad esempio, è logico che il metodo POST non sia consentito, perché l'utente non avrebbe comunque la possibilità di inserire i propri dati e inviarli al web server. Qualora invece la pagina contenga un modulo per l'invio di dati da parte dell'utente, il server di norma consente anche il metodo POST. In caso contrario viene visualizzato il messaggio di errore con il codice di stato 405, il cui scopo è informare il browser e il suo utente che il metodo utilizzato non è permesso (in inglese: Method not allowed).
L'esatta formulazione del messaggio HTTP 405 non è la stessa per tutti i server. Le espressioni più conosciute sono le seguenti:
- 405 Method Not Allowed
- 405 Not Allowed
- Method Not Allowed
- HTTP 405 Error
- HTTP Error 405 – Method Not Allowed
- HTTP 405 Method Not Allowed
- Error: 405 Method Not Allowed
- 405 – HTTP verb used to access this page is not allowed
- HTTP Status 405 – HTTP method GET is not supported by this URL
Quando si verifica l'errore 405?
Abbiamo già visto che l'errore HTTP 405 è dovuto esclusivamente a un problema lato server. La cosa può sembrare priva di senso, dal momento che Il codice di stato 405 appartiene al gruppo di messaggi che tecnicamente segnalano problemi lato client (tipo 4xx). Ma la contraddizione è solo apparente: nel caso in cui il browser invii una richiesta al web server con un metodo HTTP non consentito dalla sua configurazione, dal punto di vista del server si tratta di un errore dovuto al client, che in questo caso ha semplicemente inoltrato una richiesta sbagliata. Che vogliate soltanto aderire a un'offerta del sito e compilare modulo di contatto, è una cosa che il server non sa al momento dell'elaborazione della richiesta.
Sono tre gli scenari tipici in cui si può verificare l'errore 405 - Method not allowed:
- Il divieto del metodo HTTP è dovuto a un errore di configurazione del web server o dei componenti del software che devono eseguire l'azione rispettiva per la risorsa URL desiderata.
- Il divieto del metodo HTTP è stato previsto dal webmaster, molto spesso per ragioni di sicurezza. L'errore sta in una risorsa URL del sito, che in base al modo in cui è programmata richiede l'utilizzo di un metodo non consentito.
- Il metodo HTTP non è consentito dal provider di hosting del gestore del sito. Il caso si presenta soprattutto con il metodo POST, necessario per inserire dati e che alcuni provider bloccano per ragioni di sicurezza quando viene effettuato l'accesso a documenti HTML.
Errore HTTP 405: come risolverlo
Se vi imbattete in un sito web che mostra il messaggio d'errore HTTP 405, difficilmente sarete in grado di risolvere il problema da soli. Soluzioni semplici e immediate come ricaricare la pagina, riavviare il router o controllare le impostazioni del proxy, che potrebbero funzionare con altri errori HTTP, in questo caso sono inefficaci. Conviene quindi contattare l'amministratore per segnalare il problema e ottenere informazioni più precise sulla causa.
La situazione ovviamente cambia se siete voi stessi i responsabili della pagina che mostra il messaggio 405 agli utenti. In base alla causa dell'errore, avete diverse opzioni per risolverlo ed è consigliabile farlo il prima possibile onde evitare di infastidire i visitatori del sito e di incorrere in eventuali penalità da parte dei motori di ricerca.
Soluzione 1: attivare il metodo HTTP
Se non siete sicuri della causa della notifica 405 – Method not allowed, conviene anzitutto controllare le impostazioni delle componenti del software che gestiscono le risposte delle richieste HTTP. Di solito si tratta del web server, ma anche un proxy predefinito o un gestore HTTP (nelle applicazioni web ASP.NET) potrebbero essere responsabili del problema nel caso in cui semplicemente il metodo non sia consentito. Poiché le diverse applicazioni si differenziano in termini di configurazione, è prima necessario scoprire il funzionamento esatto di attivazione e disattivazione dei metodi HTTP.
I web server Apache consentono ad esempio di attivare i metodi attraverso il modulo mod_allowmethods. Lo potete verificare nella direttiva AllowMethods all'interno dei contenitori <Location>, che servono per modificare le impostazioni di uno o più URL. Una configurazione che permetta l'accesso alla risorsa e l'immissione dei dati lato client può essere implementata con il comando seguente:
<Location "/">
AllowMethods GET POST OPTIONS
</Location>
Nelle vecchie versioni di Apache i metodi HTTP consentiti venivano definiti attraverso le direttive <Limit> e <LimitExcept>.
Soluzione 2: pulire il codice sorgente
È del tutto normale che un amministratore decida di bloccare un metodo HTTP per una ragione specifica, come quella di rafforzare la sicurezza del sito (di solito tramite il metodo PUT). Nonostante questo, può capitare che il client sia comunque in grado di inviare una richiesta di questo tipo per recuperare una risorsa URL. Casi come questi sono spesso dovuti a un errore nella programmazione del sito web. La pagina o l'elemento richiamato sono stati collegati per sbaglio al metodo in questione e l'errore 405 ne è la logica conseguenza.
Per risolvere questo problema, dovete trovare il codice sbagliato nel documento HTML e sostituire il metodo inserito con quello corretto. Una volta sistemati il codice sorgente e la configurazione del server, la notifica di errore HTTP 405 dovrebbe sparire dal browser dei visitatori.
Soluzione 3: bypassare il blocco di sicurezza del provider
Come già detto, la causa dell'errore 405 può risiedere anche nella disattivazione da parte del provider di hosting dei metodi HTTP corrispondenti ad alcuni tipi di MIME, come ad esempio un documento HTML, per ragioni di sicurezza. In questo caso conviene naturalmente contattare il vostro provider e chiedere l'attivazione del metodo desiderato. Se questo non è possibile, ci sono dei trucchi per utilizzarlo comunque nel vostro sito web.
Il blocco può essere aggirato fornendo al sito un tipo di MIME diverso e per il quale è disponibile il metodo desiderato. Facciamo un esempio concreto: il metodo POST è solitamente disabilitato per le pagine HTML, mentre funziona nei documenti PHP. Modificando l'estensione e di conseguenza il tipo di documento web da index.html a index.php, la probabilità che l'errore 405 venga risolto è molto alta.
Un altro trucco è quello di implementare la pagina che causa l'errore 405 come contenuto della pagina di notifica di errore 405 visualizzata. Per farlo è sufficiente salvare la pagina corrispondente in una directory separata e definirla nel file di configurazione come messaggio ufficiale di errore 405.
ErrorDocument 405 /PathToFile/example.html
Questa soluzione ha tuttavia uno svantaggio: tutte le visualizzazioni della pagina sono conteggiate come errori, rendendo più difficoltosa la valutazione per fini statistici.