406 Not Acceptable

Keine Darstellung passt zum Accept-Header.

Wann du ihn verwendest

Der Client hat XML von einer API angefordert, die nur JSON liefert.

Häufige Ursachen und Lösungen

406 tritt auf, wenn der Server den Accept-Header streng auslegt: Der Client verlangt application/xml oder einen engen Vendor-Typ, und der Server kann nur etwas anderes liefern. Manche Frameworks, etwa Rails mit respond_to-Blöcken und Spring-Endpunkte mit produces, geben 406 zurück, statt auf ein Standardformat auszuweichen. Sende Accept: application/json oder lass den Header weg, und prüfe, was dein HTTP-Client standardmäßig sendet.

Auf Shared Hosting beantworten ModSecurity und ähnliche Web Application Firewalls blockierte Anfragen seit Langem mit 406, was nach einem Content-Negotiation-Problem aussieht, in Wahrheit aber eine Sicherheitsregel ist; prüfe das WAF-Log oder frag den Hoster. Beim Entwurf einer API erlaubt dir die Spezifikation, ein nicht unterstütztes Accept zu ignorieren und dein Standardformat zurückzugeben, was meist freundlicher ist als 406.

Client-Fehler (4xx)

4xx-Codes sind Client-Fehler: Die Anfrage selbst ist fehlerhaft, nicht autorisiert oder verweist auf etwas, das es nicht gibt. Dieselbe Anfrage erneut zu senden hilft nicht.

So sieht es aus

HTTP/1.1 406 Not Acceptable

So sendest du ihn

Node.js / Expressres.status(406).end()
Python / Flaskreturn '', 406
nginxreturn 406;

So prüfst du ihn

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP-Statuscodes öffnen