406 Not Acceptable oznacza, że zasób docelowy nie ma reprezentacji zgodnej z nagłówkami negocjacji klienta, takimi jak Accept, Accept-Language czy Accept-Encoding, a serwer nie chce wysłać reprezentacji domyślnej. Treść odpowiedzi powinna zawierać listę dostępnych reprezentacji, aby użytkownik lub klient mógł wybrać.
W praktyce większość serwerów ignoruje preferencje, których nie może spełnić, i wysyła reprezentację domyślną, na co RFC 9110 wprost zezwala. Dlatego kod 406 pojawia się głównie w API, które serwują tylko określone typy MIME, np. w API JSON, które otrzymuje Accept: application/xml.
Niektórzy dostawcy hostingu konfigurują moduły bezpieczeństwa, takie jak ModSecurity, tak by odpowiadały na zablokowane żądania kodem 406, więc 406 może być też decyzją zapory, a nie problemem z negocjacją treści.
Przykładowa odpowiedź
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 i sprawdzanie przekierowań
Roboty indeksujące wysyłają ogólne nagłówki Accept, więc nie powinny otrzymywać kodu 406; jeśli jednak go dostają, adres URL jest traktowany jak błąd 4xx i nie zostaje zaindeksowany. Gdy sprawdzanie przekierowań zwraca 406, a strona wczytuje się w przeglądarce, przyjrzyj się dodanym przez siebie własnym nagłówkom Accept albo regule bezpieczeństwa dopasowanej do User-Agenta lub adresu URL.
Typowe przyczyny i zastosowania
- API obsługuje tylko JSON, a klient poprosił o XML lub inny format.
- Restrykcyjna konfiguracja
Accept-Languagenie ma pasującego tłumaczenia ani wersji zapasowej. - Reguła ModSecurity lub WAF na hostingu współdzielonym blokuje żądanie kodem 406.