Chrome, Firefox und das Version-100-Problem
Meldung von doelf, Montag der 04.04.2022, 12:37:15 UhrBevor wir auf die Neuerungen des für morgen erwarteten Firefox 99.0 eingehen werden, möchten wir uns dem Version-100-Problem widmen, denn Google hat diesen Sprung bei seinem Webbrowser Chrome bereits vollzogen. Das Version-100-Problem liegt nicht auf Seiten der Webbrowser, sondern vielmehr bei den Webseiten. Oder genauer gesagt bei Webseiten, die nicht mit einer dreistelligen Hauptversion der besuchenden Webbrowser gerechnet haben.
Im Rahmen unserer internen Kompatibilitätstests konnten wir auf www.Au-Ja.de keine Probleme entdecken, doch auf einer handvoll anderer Webseiten schon. Dennoch scheint das Version-100-Problem nicht so große Kreise zu ziehen, wie es die ersten zweistelligen Versionsnummern vor elf Jahren getan hatten. Aber beginnen wir doch am Anfang, denn dann wird alles etwas klarer.
Wo liegt das Problem?
Die Zeichenkette User-Agent stammt aus dem Jahr 1994 und wurde damals vom Firefox-Urvater Netscape Navigator
eingeführt. Sie enthielt den Code-Namen des Projektes (Mozilla) sowie eine Versionskennung. Im Rahmen der HTTP-Header wird User-Agent an den Webserver übermittelt, damit die Webseite Anpassungen an den vom Benutzer verwendeten Webbrowser vornehmen kann. Dummerweise war HTTP damals noch nicht standardisiert und so entstand beim Header-Format ein ähnlicher Wildwuchs wie bei neuen HTML-Funktionen, die oftmals nur von einem Browser propagiert und von allen übrigen ignoriert wurden. Insbesondere Microsoft setzte sich beim Versuch, dem Web seinen Internet Explorer aufzuzwingen, über etliche etablierte Standards hinweg und provozierte Inkompatibilitäten, um Nutzer wie Webseitenbetreiber an seinen eigenen Browser zu binden. Da der Internet Explorer zum Lieferumfang von Windows gehörte, wurde er schnell zum dominierenden Browser und die Webseiten mussten auf seine Eigenheiten angepasst werden.
Für Web-Entwickler war der User-Agent-String Fluch und Segen zugleich: Einerseits mussten für die unterschiedlichen Browser sehr unterschiedliche Webseiten programmiert werden, anderseits konnte man dank dieser Kennung zumindest allen Besuchern eine passende Version anbieten. Um den User-Agent-String überhaupt auswerten zu können, wird dieser mittels einer Programmiersprache in seine Teile zerlegt. Beim Firefox 99.0 für Windows lautete der User-Agent-String beispielsweise:
Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0
Da diese Zeichenkette aber keinem festen Format folgt, gestaltet sich das Parsen, also das Zerlegen und Interpretieren des User-Agent-Strings, recht komplex. Zumeist stecken die Routinen, welche den User-Agent-String verarbeiten, tief verborgen in den Webseiten und wurden seit Jahren nicht mehr angefasst. Und genau hier liegt das Problem: Vor vielen Jahren war der schnelle Veröffentlichungszyklus, den Chrome und Firefox inzwischen an den Tag legen, noch nicht absehbar und etliche Entwickler hatten keine Notwendigkeit für dreistellige Hauptversionen gesehen. Und so kommt es, dass dreistellige Versionsnummer nicht richtig verarbeitet werden und die betroffenen Webseiten fehlerhaft oder auch gar nicht mehr angezeigt werden. Deren Betreiber müssen den verantwortlichen Code daher aufspüren und korrigieren, doch auch das ist gar nicht so einfach. Wurden beispielsweise Anwendungen oder Inhalte von Drittanbietern integriert, können auch diese für die Fehler verantwortlich sein. Insbesondere bei älteren, über längere Zeit nicht mehr oder nur unzureichend gepflegten Angeboten kann dies zu einem größeren Problem werden.
Abhilfe und Maßnahmen
Für Webseiten, die als problematisch bekannt sind, ändert Mozilla die Hauptversion im User-Agent-String automatisch auf 99 ab. Die betroffenen Angebote meldet der Firefox beim Aufruf von about:compat
in der Adresszeile unter dem Punkt User Agent Overrides
. Diese Maßnahme lässt sich hier auch deaktivieren, beispielsweise um das Problem zu analysieren oder eine fehlerbereinigte Fassung der Webseite zu testen. Alternativ kann man übergangsweise zum Firefox ESR wechseln und sich etwas Zeit verschaffen. Dies bietet sich beispielsweise im firmeninternen Intranet an, wo veralteter Code meist noch länger überlebt als in der freien Wildbahn. Für Chrome wurde die Option ForceMajorInMinorPositionInUserAgent eingeführt, welche standardmäßig deaktiviert ist. Wird sie aktiviert, meldet Chrome als Hauptversion 99 und verfrachtet die eigentliche Hauptversion in die Unterversion, womit die Inkompatibilität zumeist umschifft werden kann.