Wegen des Internet Explorers 11: Mozilla ändert User-Agent von Firefox

  • Ein neuer Artikel wurde veröffentlicht:

    Zitat
    Der Microsoft Internet Explorer spielt heute keine Rolle mehr - sollte man meinen. Auf Grund von fehlerhaft implementiertem User-Agent-Sniffing auf zu vielen Websites, welche Firefox 110 und höher als Internet Explorer 11 erkennen, sah sich Mozilla gezwungen, den User-Agent von Firefox zu ändern.

    Artikel lesen: „Wegen des Internet Explorers 11: Mozilla ändert User-Agent von Firefox“

  • Es ist allerschlechteste Praxis einer Website, den User-Agent auszulesen, um Entscheidungen über Funktionalität oder implementierte Code-Pfade zu treffen

    Hallo Sören :)

    bitte entschuldige die blöde Frage. Ich habe zwar keine Ahnung von Webseiten-Erstellung, bin aber neugierig. Was ist denn stattdessen die empfohlene Methode, den UA zu ermitteln?

    Gruß Ingo

  • So oder ähnlich

    PHP: get_browser - Manual

    Das bieten PHP-Systeme von Grund auf.

    Was Sören anprangert ist

    Zitat


    Einige Websites prüfen stumpf auf das Vorkommen von rv:11 im User-Agent

    Ein einfaches String-Search, egal, was für Zeichen noch danach kommen.

    Wenn du weinen möchtest, bist du falsch hier. Hier gibt es nur Lösungen!
    Oh Herr, wirf Hirn, oder Steine - Hauptsache, du triffst endlich.
    Zu viele Goofies und Dulleks vom Dienst. Schlabokka!

  • bitte entschuldige die blöde Frage. Ich habe zwar keine Ahnung von Webseiten-Erstellung, bin aber neugierig. Was ist denn stattdessen die empfohlene Methode, den UA zu ermitteln?

    So oder ähnlich

    PHP: get_browser - Manual

    Das bieten PHP-Systeme von Grund auf.

    Keine blöde Frage! Das Problem ist nicht die genutzte Methode, um den User-Agent zu ermitteln. Den erhält man ohne Probleme. Die Probleme entstehen erst bei der weiteren Verarbeitung, weil man mit der Information ja irgendetwas anstellen möchte. Sprich man nimmt den kompletten User-Agent, zerlegt diesen in seine Einzelteile und zieht daraus Schlüsse über den Browser und die verwendete Version. Dabei kann sehr viel schief gehen, insbesondere mit Blick in die Zukunft. Denn der Code kann durchaus auch über Jahre funktionieren und plötzlich ändert sich ein ganz entscheidendes Detail, welches zu Problemen führt. Beispielsweise weil die Versionsnummer des Browsers plötzlich dreistellig wird und man genau zwei Ziffern erwartet oder eben jetzt in dem Fall der Konflikt mit dem User-Agent des Internet Explorers. Gleichzeitig wird die Logik zur Erkennung ganz oft aber nicht angepasst. Teilweise werden auch fertige Bibliotheken dafür verwendet und von denen man sich abhängig macht, die im schlechtesten Fall längst nicht mehr gepflegt werden oder in der Anwendung nicht einfach aktualisiert werden kann.

    Die Alternative dazu ist Feature-Erkennung. Sprich: Statt zu prüfen, ob der Nutzer Firefox oder einen anderen Browser verwendet, sollte überprüft werden, ob der Browser die Fähigkeit hat, eine bestimmte Schnittstelle oder Funktion zu nutzen. Das ist der einzige zuverlässige Weg, auf den man sich langfristig verlassen kann und sollte. User-Agents stammen aus einer Zeit, aus der Feature-Erkennung noch nicht so gut funktionierte und in der auch noch kein ernsthafter Bedarf an so etwas bestand. Aber heute ist das eigentlich ein No-Go. Und damit meine ich: Für Analyse-Zwecke ist das absolut in Ordnung. Sprich zur Erhebung, welche Browser und Betriebssysteme genutzt werden. Wenn da was schief geht, sind halt ein paar Statistiken falsch. Geschenkt. Aber zur Bestimmung, welche Funktionen der Anwender nutzen kann oder welcher Code-Pfad genutzt wird, weil für unterschiedliche Browser unterschiedliche Code-Pfade implementiert sind, sollte so etwas unbedingt vermieden werden, weil es früher oder später viel zu oft zu Problemen führt - zu vermeidbaren Problemen wohlgemerkt.

  • ob der Browser die Fähigkeit hat, eine bestimmte Schnittstelle oder Funktion zu nutzen.

    Das hattest du mEn früher schon mal geschrieben. Das Beispiel ist auch das, was ich früher ausgelesen habe, 10++ Jahre. Aber egal. Das wäre ideal (Features), aber das kommt so mMn nicht vor. Ich hatte ja schon von meiner Bank -> Nightly geschrieben, das wurde vermutlich behoben.

    Aktuell sowas von egal ;) Bleibt sauber.

    Wenn du weinen möchtest, bist du falsch hier. Hier gibt es nur Lösungen!
    Oh Herr, wirf Hirn, oder Steine - Hauptsache, du triffst endlich.
    Zu viele Goofies und Dulleks vom Dienst. Schlabokka!

  • Echt heftig, dass einige Webseiten den User-Agenten nicht korrekt auslesen. Gut, dass Firefox flexibel reagiert, um das abzufedern. :thumbup:

    Ich brauche keine Signatur ... :S

  • Verstehe ich nicht!

    HTML, CSS & JavaScript.

    Wenn sich jeder Webentwickler an allgemeingültige Standards hält,

    sollte es doch Wurscht sein, welcher Browser gerade die Page aufruft!

    Mit <3lichem Gruß

    Mira

  • Ach ja...

    Wenn du weinen möchtest, bist du falsch hier. Hier gibt es nur Lösungen!
    Oh Herr, wirf Hirn, oder Steine - Hauptsache, du triffst endlich.
    Zu viele Goofies und Dulleks vom Dienst. Schlabokka!

  • Ach ja...

    Ach komm.

    Mein Kommentar ist als Frage zu verstehen.

    Aber, ein gesundes, neues Jahr wünsch’ ich Dir.

    Und sei doch bitte so nett und erkläre es mir, wenn ich so mit meiner Vermutung daneben liege,

    denn ich verstehe es wirklich nicht.

    Mit <3lichem Gruß

    Mira

  • Angefangen hat es mit CSS-Weichen, für den IE, Firefox, Opera (bis v12), Chrome, was auch immer. Auch die Einbindung von Videos vor >10 Jahren war unterschiedlich. Nicht jegliches HTML wurde bei allen unterstützt, JavaScript etc.

    Aus 2011

    Browser im Vergleich
    Welcher Browser ist der schnellste? Wie gut halten sich die aktuellen Browser an Webstandards? Und wie sieht es mit der Speicherverwaltung aus? Der Artikel…
    www.com-magazin.de

    Oder jeder für sich

    The CSS3 Test

    "Standard" gab es auch nicht immer

    WHATWG – SELFHTML-Wiki

    Inwiefern Microsoft sich eingebracht hat, mir unbekannt. Der IE hat schon seit langem das Nachsehen, sei es hier, da oder dort. Und es war klar, dass limitiert in der Entwicklung. Deswegen hat MS sich erst mit EDGE versucht und dann letztlich Edge auf Chromium-basis.

    Die MDN ist da ziemlich ausführlich und bietet für diverse Begriffe eine Tabelle an, ab wann welcher Browser es unterstützt:

    MDN Web Docs
    The MDN Web Docs site provides information about Open Web technologies including HTML, CSS, and APIs for both Web sites and progressive web apps.
    developer.mozilla.org

    Was viele heute sehen und als "Webstandard" titulieren, war ein ganz langer Weg und gar nicht selbstverständlich.

    Wenn du weinen möchtest, bist du falsch hier. Hier gibt es nur Lösungen!
    Oh Herr, wirf Hirn, oder Steine - Hauptsache, du triffst endlich.
    Zu viele Goofies und Dulleks vom Dienst. Schlabokka!

  • Wenn sich jeder Webentwickler an allgemeingültige Standards hält,

    sollte es doch Wurscht sein, welcher Browser gerade die Page aufruft!

    Es gibt keinen Browser, der jeden Standard vollständig implementiert hat. Nicht jede Eventualität wird durch Standards explizit geregelt. Nicht jeder Standard wird von jedem Browser präzise befolgt. Teilweise missachen Browser sogar ganz bewusst Standards, weil die Realität (= Webkompatibilität) dies verlangt. Auch Standards verändern sich manchmal mit der Zeit. Nicht jeder Browserhersteller möchte jede Idee eines anderen Browserherstellers implementieren. Und natürlich kann es auch immer Fehler in der Implementierung eines Standards geben.

    Als Webentwickler hat man permanent mit unterschiedlichen Verhaltensweisen unterschiedlicher Browser zu tun. Das funktioniert bei einfachen Websites normalerweise ohne spezielle Weichen für bestimmte Browser und man kann den Code so schreiben, dass er für alle Browser funktioniert. Aber je komplexer die Website ist, desto wahrscheinlicher ist es auch, dass unterschiedlicher Code für unterschiedliche Browser ausgeliefert werden muss. Kein komplett unterschiedlicher Code für die gesamte Seite, aber eben unterschiedliche Codepfade für bestimmte Funktionen.