L’errore 406 Not Acceptable indica che il server non può produrre una risposta compatibile con le preferenze comunicate dal client. Alcune configurazioni lo usano anche per blocchi applicativi: leggi la risposta e i log prima di attribuirlo al WAF.
Indice dei contenuti
Errore 406 Not Acceptable: WAF e contenuti
Questa guida approfondisce errore 406 Not Acceptable con controlli progressivi, modifiche reversibili e verifiche finali. Non inviare password, cookie, token, chiavi private o codici 2FA nei ticket.
Che cosa significa
Gli header Accept, Accept-Language e Accept-Encoding possono influenzare la negoziazione. Tuttavia un 406 durante il salvataggio di testo, codice o form può essere collegato a ModSecurity.
Il messaggio e i log devono stabilire quale interpretazione si applica al caso specifico.
Come riconoscere il problema
- Una API restituisce 406 per un formato richiesto.
- Il salvataggio fallisce solo con una stringa specifica.
- Il log mostra ModSecurity access denied.
- Il browser funziona ma un client personalizzato no.
- Cambiare l’header Accept modifica il risultato.
Cause più frequenti
1. Header Accept non supportato
Il client richiede un formato che l’endpoint non produce. Confronta questa ipotesi con il messaggio completo e con i log dell’orario interessato, evitando conclusioni basate soltanto sulla pagina mostrata dal browser.
2. Content negotiation errata
Lingua, codifica o media type non corrispondono.
3. Regola ModSecurity
Il payload somiglia a SQL injection, XSS o codice.
4. Plugin di sicurezza
Un filtro applicativo restituisce 406 invece di 403.
5. API configurata male
Il server accetta soltanto JSON o un formato specifico.
6. Cache con variazione incompleta
Una risposta per un header viene servita a client differenti.
Diagnosi passo per passo
Salva il risultato prima di passare al controllo seguente, così potrai identificare il punto preciso in cui il comportamento cambia.
- Controlla header Accept. Confronta browser e client che fallisce.
- Leggi corpo e intestazioni. Identifica server, endpoint e formato atteso.
- Registra orario e payload minimo. Riduci il contenuto finché individui la parte che scatena il blocco.
- Controlla error_log e audit WAF. Cerca rule id e messaggio.
- Prova un media type supportato. Usa la documentazione ufficiale dell’API.
- Verifica plugin di sicurezza. Riproduci in staging senza disattivazioni globali.
- Controlla Vary e cache. Assicurati che le risposte siano separate per gli header pertinenti.
Procedura di risoluzione
Dopo la modifica ripeti il test originale e verifica che non siano comparsi nuovi errori o regressioni.
- Correggi Accept. Richiedi un formato realmente supportato.
- Invia Content-Type coerente. Distingui il formato richiesto da quello inviato.
- Correggi il payload. Rimuovi markup o dati non validi quando possibile.
- Richiedi esclusione WAF mirata. Fornisci URL, parametro e rule id.
- Aggiorna plugin o API client. Usa versioni compatibili.
- Correggi cache e header Vary. Evita rappresentazioni sbagliate.
- Mantieni il WAF attivo. Verifica che l’eccezione non permetta input pericolosi.
Domande frequenti
Che cosa significa l’errore 406 Not Acceptable: WAF e contenuti?
In sintesi, gli header Accept, Accept-Language e Accept-Encoding possono influenzare la negoziazione. Tuttavia un 406 durante il salvataggio di testo, codice o form può essere collegato a ModSecurity.
Quali controlli fare per diagnosticare l’errore 406 Not Acceptable: WAF e contenuti?
Controlla header Accept. Confronta browser e client che fallisce.
Guide Xlogic correlate
- ModSecurity blocca WordPress: come diagnosticare il 403
- Errore 416 Range Not Satisfiable
- Errore 413 Content Too Large: cause e soluzioni