406 Not Acceptable indica che la risorsa di destinazione non ha alcuna rappresentazione che corrisponda alle intestazioni di negoziazione del client, come Accept, Accept-Language o Accept-Encoding, e che il server non intende inviare una rappresentazione predefinita. Il corpo dovrebbe elencare le rappresentazioni disponibili, così che l’utente o il client possa scegliere.
Nella pratica, la maggior parte dei server ignora le preferenze che non può soddisfare e invia una rappresentazione predefinita, cosa che la RFC 9110 consente esplicitamente. Il 406 compare quindi soprattutto nelle API che servono solo determinati media type, per esempio un’API JSON che riceve Accept: application/xml.
Alcuni provider di hosting configurano moduli di sicurezza come ModSecurity in modo che rispondano 406 alle richieste bloccate, quindi un 406 può anche essere una decisione del firewall e non un problema di negoziazione.
Esempio di risposta
HTTP/1.1 406 Not Acceptable
Date: Fri, 06 Nov 2026 10:15:32 GMT
Vary: Accept
Content-Type: application/json
Content-Length: 57
{"error":"Available formats: application/json, text/csv"} SEO e verifica dei redirect
I crawler inviano intestazioni Accept molto ampie, quindi non dovrebbero ricevere un 406; se succede, l’URL viene trattato come un errore 4xx e non viene indicizzato. Quando una verifica redirect restituisce 406 ma la pagina si carica nel browser, controlla le eventuali intestazioni Accept personalizzate che hai aggiunto, oppure una regola di sicurezza basata sullo user agent o sull’URL.
Cause comuni e casi d’uso
- Un’API supporta solo JSON, ma il client ha richiesto XML o un altro formato.
- Una configurazione rigida di
Accept-Languagenon ha una traduzione corrispondente né una lingua di ripiego. - Una regola di ModSecurity o del WAF su un hosting condiviso blocca la richiesta con un 406.