I web server uti­liz­za­no i codici di stato HTTP per informare i client, come ad esempio i browser, sullo stato di la­vo­ra­zio­ne delle richieste inviate. Sono diversi i codici che servono a segnalare il successo o l'in­suc­ces­so di una richiesta e alcuni di essi sono messaggi molto specifici. Mentre alcuni sono piuttosto frequenti e vengono co­mu­ni­ca­ti di continuo agli utenti del World Wide Web, l'errore 405 (Method not allowed) è una notifica ab­ba­stan­za rara. In questo articolo vi spie­ghia­mo esat­ta­men­te cosa comporta questo messaggio di errore e perché la sua soluzione spetta al gestore del sito web.

Registra il tuo dominio
  • Domain Connect gratuito per una con­fi­gu­ra­zio­ne facile del DNS
  • Cer­ti­fi­ca­to SSL Wildcard gratuito
  • Pro­te­zio­ne privacy inclusa

Che cosa significa l'errore HTTP 405?

L'Hy­per­text Transfer Protocol (HTTP) definisce i metodi che indicano le azioni che si possono eseguire sul server web con­tat­ta­to. I seguenti sono alcuni tra i metodi più uti­liz­za­ti:

  • GET: richiesta di in­for­ma­zio­ni associate a uno specifico URL
  • HEAD: richiesta di in­for­ma­zio­ni del­l'hea­der associate a un URL
  • POST: invio di dati al web server (es. dati dei moduli)
  • PUT: so­sti­tu­zio­ne dei dati di un URL specifico con dati nuovi trasmessi dal client
  • DELETE: eli­mi­na­zio­ne dei dati nel ri­spet­ti­vo URL

L'am­mi­ni­stra­to­re può con­fi­gu­ra­re un web server in modo che permetta o meno ognuno dei singoli metodi. In assenza di contenuti in­te­rat­ti­vi sul sito, ad esempio, è logico che il metodo POST non sia con­sen­ti­to, perché l'utente non avrebbe comunque la pos­si­bi­li­tà di inserire i propri dati e inviarli al web server. Qualora invece la pagina contenga un modulo per l'invio di dati da parte del­l'u­ten­te, il server di norma consente anche il metodo POST. In caso contrario viene vi­sua­liz­za­to il messaggio di errore con il codice di stato 405, il cui scopo è informare il browser e il suo utente che il metodo uti­liz­za­to non è permesso (in inglese: Method not allowed).

L'esatta for­mu­la­zio­ne del messaggio HTTP 405 non è la stessa per tutti i server. Le espres­sio­ni più co­no­sciu­te 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 esclu­si­va­men­te a un problema lato server. La cosa può sembrare priva di senso, dal momento che Il codice di stato 405 ap­par­tie­ne al gruppo di messaggi che tec­ni­ca­men­te segnalano problemi lato client (tipo 4xx). Ma la con­trad­di­zio­ne è solo apparente: nel caso in cui il browser invii una richiesta al web server con un metodo HTTP non con­sen­ti­to dalla sua con­fi­gu­ra­zio­ne, dal punto di vista del server si tratta di un errore dovuto al client, che in questo caso ha sem­pli­ce­men­te inoltrato una richiesta sbagliata. Che vogliate soltanto aderire a un'of­fer­ta del sito e compilare modulo di contatto, è una cosa che il server non sa al momento del­l'e­la­bo­ra­zio­ne della richiesta.

Sono tre gli scenari tipici in cui si può ve­ri­fi­ca­re l'errore 405 - Method not allowed:

  1. Il divieto del metodo HTTP è dovuto a un errore di con­fi­gu­ra­zio­ne del web server o dei com­po­nen­ti del software che devono eseguire l'azione ri­spet­ti­va per la risorsa URL de­si­de­ra­ta.
  2. 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 è pro­gram­ma­ta richiede l'u­ti­liz­zo di un metodo non con­sen­ti­to.
  3. Il metodo HTTP non è con­sen­ti­to dal provider di hosting del gestore del sito. Il caso si presenta so­prat­tut­to con il metodo POST, ne­ces­sa­rio per inserire dati e che alcuni provider bloccano per ragioni di sicurezza quando viene ef­fet­tua­to l'accesso a documenti HTML.

Errore HTTP 405: come ri­sol­ver­lo

Se vi imbattete in un sito web che mostra il messaggio d'errore HTTP 405, dif­fi­cil­men­te sarete in grado di risolvere il problema da soli. Soluzioni semplici e immediate come ri­ca­ri­ca­re la pagina, riavviare il router o con­trol­la­re le im­po­sta­zio­ni del proxy, che po­treb­be­ro fun­zio­na­re con altri errori HTTP, in questo caso sono inef­fi­ca­ci. Conviene quindi con­tat­ta­re l'am­mi­ni­stra­to­re per segnalare il problema e ottenere in­for­ma­zio­ni più precise sulla causa.

La si­tua­zio­ne ov­via­men­te cambia se siete voi stessi i re­spon­sa­bi­li della pagina che mostra il messaggio 405 agli utenti. In base alla causa del­l'er­ro­re, avete diverse opzioni per ri­sol­ver­lo ed è con­si­glia­bi­le farlo il prima possibile onde evitare di in­fa­sti­di­re i vi­si­ta­to­ri 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 con­trol­la­re le im­po­sta­zio­ni delle com­po­nen­ti del software che ge­sti­sco­no le risposte delle richieste HTTP. Di solito si tratta del web server, ma anche un proxy pre­de­fi­ni­to o un gestore HTTP (nelle ap­pli­ca­zio­ni web ASP.NET) po­treb­be­ro essere re­spon­sa­bi­li del problema nel caso in cui sem­pli­ce­men­te il metodo non sia con­sen­ti­to. Poiché le diverse ap­pli­ca­zio­ni si dif­fe­ren­zia­no in termini di con­fi­gu­ra­zio­ne, è prima ne­ces­sa­rio scoprire il fun­zio­na­men­to esatto di at­ti­va­zio­ne e di­sat­ti­va­zio­ne dei metodi HTTP.

I web server Apache con­sen­to­no ad esempio di attivare i metodi at­tra­ver­so il modulo mod_al­lo­w­me­thods. Lo potete ve­ri­fi­ca­re nella direttiva Al­lo­w­Me­thods al­l'in­ter­no dei con­te­ni­to­ri <Location>, che servono per mo­di­fi­ca­re le im­po­sta­zio­ni di uno o più URL. Una con­fi­gu­ra­zio­ne che permetta l'accesso alla risorsa e l'im­mis­sio­ne dei dati lato client può essere im­ple­men­ta­ta con il comando seguente:

<Location "/">
    AllowMethods GET POST OPTIONS
</Location>
N.B.

Nelle vecchie versioni di Apache i metodi HTTP con­sen­ti­ti venivano definiti at­tra­ver­so le direttive <Limit> e <Li­mi­tEx­cept>.

Soluzione 2: pulire il codice sorgente

È del tutto normale che un am­mi­ni­stra­to­re decida di bloccare un metodo HTTP per una ragione specifica, come quella di raf­for­za­re la sicurezza del sito (di solito tramite il metodo PUT). No­no­stan­te questo, può capitare che il client sia comunque in grado di inviare una richiesta di questo tipo per re­cu­pe­ra­re una risorsa URL. Casi come questi sono spesso dovuti a un errore nella pro­gram­ma­zio­ne del sito web. La pagina o l'e­le­men­to ri­chia­ma­to sono stati collegati per sbaglio al metodo in questione e l'errore 405 ne è la logica con­se­guen­za.

Per risolvere questo problema, dovete trovare il codice sbagliato nel documento HTML e so­sti­tui­re il metodo inserito con quello corretto. Una volta sistemati il codice sorgente e la con­fi­gu­ra­zio­ne del server, la notifica di errore HTTP 405 dovrebbe sparire dal browser dei vi­si­ta­to­ri.

Soluzione 3: bypassare il blocco di sicurezza del provider

Come già detto, la causa del­l'er­ro­re 405 può risiedere anche nella di­sat­ti­va­zio­ne da parte del provider di hosting dei metodi HTTP cor­ri­spon­den­ti ad alcuni tipi di MIME, come ad esempio un documento HTML, per ragioni di sicurezza. In questo caso conviene na­tu­ral­men­te con­tat­ta­re il vostro provider e chiedere l'at­ti­va­zio­ne del metodo de­si­de­ra­to. Se questo non è possibile, ci sono dei trucchi per uti­liz­zar­lo comunque nel vostro sito web.

Il blocco può essere aggirato fornendo al sito un tipo di MIME diverso e per il quale è di­spo­ni­bi­le il metodo de­si­de­ra­to. Facciamo un esempio concreto: il metodo POST è so­li­ta­men­te di­sa­bi­li­ta­to per le pagine HTML, mentre funziona nei documenti PHP. Mo­di­fi­can­do l'e­sten­sio­ne e di con­se­guen­za il tipo di documento web da index.html a index.php, la pro­ba­bi­li­tà che l'errore 405 venga risolto è molto alta.

Un altro trucco è quello di im­ple­men­ta­re la pagina che causa l'errore 405 come contenuto della pagina di notifica di errore 405 vi­sua­liz­za­ta. Per farlo è suf­fi­cien­te salvare la pagina cor­ri­spon­den­te in una directory separata e definirla nel file di con­fi­gu­ra­zio­ne come messaggio ufficiale di errore 405.

ErrorDocument 405 /PathToFile/example.html

Questa soluzione ha tuttavia uno svan­tag­gio: tutte le vi­sua­liz­za­zio­ni della pagina sono con­teg­gia­te come errori, rendendo più dif­fi­col­to­sa la va­lu­ta­zio­ne per fini sta­ti­sti­ci.

Vai al menu prin­ci­pa­le