Fehler 406 – Not Acceptable
Im Gegensatz zu den bereits in früheren Beiträgen beschriebenen Fehlercodes 404 und 502 tritt 406 – Not Acceptable nur sehr selten auf. Wenn es aber doch mal passiert, kann er, wie eigentlich jeder Fehler, für eine Menge Ärger sorgen. Die Vier am Anfang des Codes impliziert zwar, dass das Problem auf Client-Seite liegt, tatsächlich ist die Sache jedoch bei näherer Betrachtung nicht so einfach, wie sie zunächst scheint.
Was ist akzeptabel?
Die Phrase Not Acceptable sagt zunächst einmal nicht viel aus. Klar, etwas wurde nicht akzeptiert, aber worum genau handelt es sich dabei?
Wenn du in Firefox, Chrome & Co eine URL in die Adresszeile tippst und auf Enter drückst, passieren im Hintergrund viele Dinge. Für das Verständnis des 406er-Fehlers relevant ist die Tatsache, dass der Browser dem Server mitteilt, welche Inhaltstypen er eigentlich verarbeiten kann. Diese Information wird in Form des sogenannten Accept-Headers übermittelt. Nun kann es aber sein, dass der Server nicht dazu in der Lage ist, die gewünschten Inhaltstypen zu liefern. Das Ergebnis ist der Fehlercode 406 – Not Acceptable.
Zusammengefasst haben also beide Seiten – Server und Client – alles richtig gemacht. Nur hilft das weder dem Besucher noch dem Betreiber einer Seite.
Der Accept Header
Stell dir einen Browser vor, der Text nur dann darstellen kann, wenn er in einer HTML-Datei steht und nur gif-Grafiken anzeigt. Der Accept-Header eines solchen Browsers würde folgende Zeilen beinhalten:
Accept: text/html
Accept: image/gif
Dabei bezeichnet der Teil vor dem Schrägstrich (hier also »text« bzw. »image«) den MIME-Typen und jener Teil danach (im Beispiel: »html« bzw. »gif«) den MIME-Subtypen. Das Kürzel MIME (Multipurpose Internet Mail Extension) ist historisch zu verstehen, da es ursprünglich für den Versand von Mails mit Anhängen gedacht war. Zwar hat sich die Bezeichnung gehalten, richtiger wäre es jedoch, von Internet Media Types zu sprechen.
Zusätzlich zu diesen Typen kann der Accept-Header auch weitere Informationen beinhalten, etwa welche Zeichensätze (Charsets) akzeptiert werden. So wird beispielsweise ein Browser, der ausschließlich das lateinische Alphabet darstellen will oder kann, mit einer russischen Seite wenig anfangen können. Apropos Russisch: Auch die verwendete Sprache kann, unabhängig vom Zeichensatz, eine Rolle spielen, ob eine Anfrage beantwortet werden kann oder nicht.
All diese Informationen verraten dem Server also, was er dem Client zumuten kann und was nicht. Soweit möglich, wird er die Daten in der gewünschten Form bereitstellen. Falls dies aber nicht geht, weil etwa im obigen Beispiel Bilder nur im png-Format vorliegen, schickt er den Fehler 406 zurück: Die Wünsche des Accept-Headers sind nicht erfüllbar – und somit für den Browser nicht acceptable.
Nichts wird so heiß gegessen wie es gekocht wird
Das obige Szenario mit den MIME-Typen dient nur dem Verständnis, ist aber zum Glück eher unrealistisch. Tatsächlich sind aktuelle Browser dazu in der Lage, praktisch »eh alles« zu verarbeiten. Von daher wird es vermutlich kaum vorkommen, dass Bilder ausschließlich im gif-Format akzeptiert werden, sodass die fragliche Zeile des Accept-Headers eher so aussieht:
Accept: image/*
Der Stern symbolisiert hier als Wildcard, dass jedes beliebige (zumindest aber gängige) Bild-Format verarbeitet und angezeigt werden kann.
Was kann ich auf Client-Seite tun?
Als findiger User magst du nun als erstes fragen: »Kann ich denn den Accept-Header anpassen, um den Fehler 406 zu vermeiden?«, doch das ist die falsche Frage. Die richtige Frage müsste lauten: »Soll ich es tun?«, und die Antwort darauf lautet: »Lieber nicht.«
Zwar mag es Tricks und Tools geben, das zu bewerkstelligen, doch letztlich ist es eine schlechte Idee. Üblicherweise weiß ein Browser selbst am besten, was er verarbeiten kann und was nicht. Zu versuchen, diese Grenzen mit Gewalt zu erweitern wäre so, als würdest du dein Diesel-Auto mit Super 95 Benzin betanken. Auch wenn es für den Augenblick so wirken mag, als ginge es gut, wirst du den Irrtum spätestens dann erkennen, wenn du weiterfahren willst.
Wie so oft ist das sinnvollste, das du als Client machen kannst, wenn du mit dem Fehlercode 406 konfrontiert bist, ein Update durchzuführen. Bring deinen Browser auf den letzten Stand.
Überprüfe und aktualisiere dabei auch Plugins und Erweiterungen, die du verwendest. Speziell Plugins, die dazu dienen, Inhalte darzustellen, die der Browser sonst nicht verarbeiten könnte, verdienen hier besonderes Augenmerk.
Umgekehrt kann es allerdings auch sein, dass das Problem erst nach der Installation eines Updates auftreten. Sollte dies der Fall sein, führt wohl kein Weg um ein »Downgrade«, also die Zurücknahme des Updates, herum – zumindest so lange, bis ein noch neueres Update verfügbar ist. Bei Plugins und Erweiterungen mag es auch reichen, sie probeweise zu deaktivieren.
Und nicht zuletzt kann sich auch ein Blick auf die verwendete URL lohnen. Vielleicht ist ja etwas ganz Banales passiert, wie z.B. das Weglassen einer Endung, etwa www.Beispiel.at/index anstelle von www.Beispiel.at/index.html.
Was kann ich auf Server-Seite tun?
Zwar ist der 406er als clientseitiger Fehler klassifiziert, dennoch kann die Ursache auch auf der Serverseite liegen.
In den FAQ von easyname wird bereits darauf eingegangen, dass der Fehler im Zusammenhang mit der Application Firewall auftreten kann. Deren Job ist es, den Datenverkehr auf Regelverstöße zu überprüfen und entsprechende IP-Adressen im Fall des Falles vorübergehend zu sperren. Die Folge davon ist die Statusmeldung 406 – Not Acceptable beim Client.
Zur Kontrolle, ob der Fehler aufgrund fehlerhafter Server-Einstellungen auftritt, lohnt es sich, die Konfigurationsdateien und natürlich auch die Application Logs zu prüfen. In letzteren findest du Informationen über alle oder zumindest kürzlich eingegangene Abfragen und zu welchem Resultat sie geführt haben. Das sollte einen guten Wink in die richtige Richtung geben, auf die du dich konzentrieren kannst.
A-priori-Vermeidung des Fehlers 406
Es ist kein Zufall, dass der Fehler 406 zu den eher seltenen Fehlern zählt. Denn einerseits sind die gängigen Browser, wie bereits erwähnt, in der Lage, vielfältige Informationen zu verarbeiten. Andererseits gibt es auch für Website-Betreiber Möglichkeiten, den Fehler erst gar nicht passieren zu lassen.
So kannst du als Administrator etwa dafür sorgen, dass bestimmte zusätzliche MIME-Typen erkannt werden, die von Browsern akzeptiert würden. Bei Apache-Server geschieht dies beispielsweise durch Hinzufügen zur .htaccess-Datei oder in der Virtual Host Konfiguration.
Auch ist es gut, wenn du dir vor Augen hältst, dass es Alternativen dazu gibt, deinen Website-Besuchern einfach nur die Fehlermeldung anzuzeigen. Viele Betreiber entscheiden sich in so einem Fall dafür, eine reale, alternative Seite anzubieten. Zwar wird das die Menschen nicht unbedingt zufriedenstellen, aber immerhin bleibt der Ärger aus, den ein Fehlercode verursacht, der den meisten ohnehin nichts sagt.
Es besteht auch die Möglichkeit, den Anwendern statt des 406er-Codes eine Auswahl der gültigen Darstellungsmöglichkeiten anzubieten. Auf diesem Wege können Server und Client gleichsam einen Kompromiss schließen, was acceptable ist.
Das könnte dich auch interessieren
Günter Gerstbrein
Günter Gerstbrein, Jahrgang 1977, studierte technische Mathematik an der TU Wien und war etwa 13 Jahre in der Software-Entwicklung tätig. Als „Texter, der aus der Technik kam“ ist es sein Ziel, komplizierte Sachverhalte leicht verständlich und ohne viel Techno-Babble zu vermitteln.