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 AcceptableSo sendest du ihn
| Node.js / Express | res.status(406).end() |
|---|---|
| Python / Flask | return '', 406 |
| nginx | return 406; |
So prüfst du ihn
curl -s -o /dev/null -w "%{http_code}\n" https://example.com/