Home / Errori del sito / Errore 406 Not Acceptable: cause e soluzioni

Errore 406 Not Acceptable: cause e soluzioni

L’errore 406 Not Acceptable è uno dei codici HTTP più rari da incontrare navigando, e proprio per questo uno dei più disorientanti quando compare. In teoria indica che il server non può fornire la risorsa in nessuno dei formati che il client ha dichiarato di accettare. In pratica, sui normali siti web, il 406 è quasi sempre il segnale di una regola di sicurezza che ha scambiato una richiesta legittima per un attacco.

In questa guida vediamo entrambe le facce del 406, quella teorica e quella pratica, come capire quale delle due stai affrontando e come risolverlo.

Cosa significa errore 406 secondo lo standard

Il 406 fa parte degli errori 4xx. Per capirlo bisogna sapere che ogni richiesta del browser include alcune intestazioni con cui dichiara le proprie preferenze: Accept indica i formati di contenuto graditi, come HTML, JSON o immagini; Accept-Language le lingue; Accept-Encoding i tipi di compressione supportati. Il server può usare queste informazioni per scegliere la versione più adatta della risorsa, un meccanismo chiamato negoziazione dei contenuti.

Se il client accetta solo formati che il server non è in grado di fornire, lo standard prevede la risposta 406. Un esempio: un’applicazione che chiede a un’API una risposta in formato XML, quando l’API sa rispondere solo in JSON. Nella pratica questo caso è raro, perché i browser accettano quasi qualsiasi formato e la maggior parte dei server, invece di rispondere 406, restituisce semplicemente il formato predefinito.

Cosa significa il 406 nella pratica

Sui siti ospitati da hosting condivisi, il 406 è usato molto spesso da ModSecurity, un firewall applicativo che analizza ogni richiesta alla ricerca di schemi tipici degli attacchi: codice SQL, script, percorsi di sistema, caratteri sospetti. Quando una richiesta corrisponde a una regola, ModSecurity la blocca. Il codice restituito dipende dalla configurazione del provider: alcuni usano il 403, altri proprio il 406.

Il risultato è un errore che compare solo in situazioni molto specifiche: quando salvi un articolo che contiene certe parole o frammenti di codice, quando invii un modulo con determinati caratteri, quando carichi un file con un nome particolare. Il resto del sito funziona perfettamente, e per questo il problema è difficile da riconoscere: chi lo incontra pensa a un guasto casuale, mentre si tratta di un blocco preciso e riproducibile.

Come si presenta

I messaggi più comuni sono 406 Not Acceptable, HTTP Error 406 e An appropriate representation of the requested resource could not be found on this server, quest’ultimo tipico dei server Apache. Su WordPress il 406 compare spesso in modo indiretto: l’editor mostra un messaggio come Aggiornamento non riuscito o La risposta non è una risposta JSON valida, e solo aprendo gli strumenti per sviluppatori si scopre che la richiesta di salvataggio ha ricevuto un 406.

Le cause più comuni

Falso positivo del firewall applicativo. È la causa di gran lunga più frequente. Un articolo che spiega come scrivere una query SQL, un esempio di codice JavaScript, un testo che contiene sequenze come ../ o parole chiave del linguaggio di programmazione possono far scattare le regole di sicurezza. Anche alcuni plugin che inviano molti dati in un’unica richiesta, come i page builder, possono essere scambiati per attacchi.

Parametri sospetti nell’indirizzo. Link con parametri lunghi o insoliti, per esempio quelli generati da alcune campagne di marketing o da strumenti di tracciamento, possono essere bloccati dalle stesse regole.

Intestazioni Accept troppo restrittive. Nelle integrazioni e nelle API, un client che dichiara di accettare un solo formato non disponibile riceve un 406 conforme allo standard. Capita con script scritti a mano o con librerie configurate male.

Nomi di file particolari. Il caricamento di file con nomi che contengono caratteri speciali o estensioni doppie può essere bloccato come potenziale tentativo di caricare codice malevolo.

Come risolvere se sei un visitatore

Se il 406 compare inviando un modulo, prova a semplificare il testo: elimina simboli insoliti, frammenti di codice o link, poi invia di nuovo. Se compare aprendo un link, prova a raggiungere la stessa pagina dalla home del sito, senza i parametri aggiunti all’indirizzo. Svuotare cache e cookie, o usare una finestra in incognito, aiuta nei rari casi in cui il blocco dipende da dati memorizzati. Se nulla funziona, segnala il problema al gestore del sito indicando che cosa stavi facendo.

Come risolvere se il sito è tuo

1. Riproduci l’errore e annota il momento

Ripeti l’operazione che causa il 406 e annota l’ora esatta e l’indirizzo coinvolto. Negli strumenti per sviluppatori del browser, nella scheda Rete, trovi la richiesta bloccata con il metodo usato e i dati inviati.

2. Cerca il blocco nei log

Il log degli errori del server o il log specifico di ModSecurity, se il pannello lo rende disponibile, riporta la richiesta bloccata con un identificativo della regola che è scattata, di solito indicato come id seguito da un numero. Questo identificativo è l’informazione più preziosa: permette di disattivare solo quella regola senza ridurre la protezione del resto del sito. Trovi dove cercare nella guida ai log del server.

3. Chiedi all’hosting di escludere la regola

Sugli hosting condivisi la configurazione di ModSecurity è gestita dal provider. Contatta l’assistenza indicando l’indirizzo, l’ora dell’errore e, se lo hai trovato, l’identificativo della regola: potranno escluderla per il tuo sito o per uno specifico indirizzo, come la pagina di salvataggio degli articoli. Alcuni pannelli permettono di disattivare ModSecurity per un singolo dominio, ma è una scelta da evitare: togli una protezione utile per risolvere un problema circoscritto.

4. Verifica le intestazioni nelle integrazioni

Se il 406 arriva da un’API o da un’integrazione, controlla l’intestazione Accept inviata dal client e confrontala con i formati supportati dal servizio. Spesso basta impostare Accept: application/json o un valore più generico per risolvere.

5. Su WordPress, escludi i plugin

Se il blocco riguarda il salvataggio di contenuti, prova a salvare un articolo di prova con poco testo semplice. Se funziona, il problema è nel contenuto specifico; se non funziona nemmeno così, verifica i plugin di sicurezza, che possono applicare regole simili a quelle del server. Il metodo completo per isolare il componente responsabile è descritto nella guida agli errori di WordPress.

Un esempio tipico: la guida che non si salva

Immagina di scrivere su WordPress un articolo che spiega come proteggere un sito dagli attacchi. Nel testo inserisci un esempio di richiesta malevola, per mostrare ai lettori come riconoscerla, con frammenti come UNION SELECT o un tag <script>. Premi “Aggiorna” e l’editor mostra un messaggio di errore generico. Riprovi, svuoti la cache, cambi browser: niente da fare. Eppure, se togli quel paragrafo, l’articolo si salva senza problemi.

Quello che succede è che il firewall applicativo del server analizza i dati inviati dall’editor, trova sequenze identiche a quelle usate negli attacchi reali e blocca la richiesta, senza poter sapere che si tratta di un esempio didattico. Il blocco è corretto dal punto di vista del firewall, ma è un falso positivo per te.

Le soluzioni sono due. La più rapida è riformulare l’esempio, per esempio inserendolo come immagine o spezzando le sequenze critiche. La più pulita è chiedere all’hosting di escludere la regola specifica per l’indirizzo usato dall’editor per salvare i contenuti, in modo che il resto del sito resti protetto. Chi scrive spesso contenuti tecnici, come guide di programmazione o di sicurezza, incontra questo problema regolarmente, ed è utile sapere in anticipo come affrontarlo.

406 e 403: due modi per dire “bloccato”

Quando un firewall blocca una richiesta, può rispondere in modi diversi a seconda della configurazione. Il 403 è la risposta più diffusa e più corretta dal punto di vista dello standard, perché indica un accesso negato. Il 406 viene usato da alcuni provider per distinguere i blocchi del firewall applicativo dagli altri divieti. Il significato pratico è lo stesso: una regola di sicurezza ha fermato la richiesta, e la soluzione passa dal log e dall’esclusione mirata della regola.

Errore 406 e SEO

Di solito il 406 colpisce operazioni dell’area amministrativa o invii di moduli, che non riguardano i motori di ricerca. Può però diventare un problema SEO se una regola troppo aggressiva blocca le richieste di Googlebot o pagine pubbliche raggiunte con determinati parametri. Il rapporto sull’indicizzazione di Search Console segnala gli indirizzi che Google non riesce a scansionare, e lo strumento di controllo degli URL mostra la risposta esatta ricevuta da Google.

Domande frequenti

Perché il 406 compare solo con alcuni articoli?

Perché il blocco dipende dal contenuto: un testo con frammenti di codice, sequenze di caratteri particolari o parole chiave tipiche degli attacchi fa scattare la regola, mentre il resto degli articoli passa senza problemi.

Posso disattivare ModSecurity per risolvere?

È tecnicamente possibile su molti hosting, ma sconsigliato. ModSecurity protegge il sito da attacchi reali; la soluzione migliore è far escludere la singola regola che causa il falso positivo.

Il 406 è colpa del mio browser?

Quasi mai. I browser moderni accettano tutti i formati comuni. Nella stragrande maggioranza dei casi il 406 nasce da una regola di sicurezza del server, quindi la soluzione va cercata lì e non nelle impostazioni del browser.

Tag:

Sign Up For Daily Newsletter

Stay updated with our weekly newsletter. Subscribe now to never miss an update!

[mc4wp_form]