User-Agent-Kennung
Wenn ein Browser oder ein Such-Robot oder der Agent eines Proxy-Servers bei einem Web-Server mit einem Request Daten anfordert, schickt er im Header immer auch eine Zeichenkette mit, mit der er sich dem Web-Server gegenüber „namentlich vorstellt“.
ursprüngliche Ziele
Eine solche User-Agent-Kennung sollte einen Hinweis auf den verwendeten Browser und seine Version geben.:
- In JavaScript gibt es das navigator-Objekt, mit dem man so genannte Browserweichen programmierte, um bestimmte JavaScript-Anweisungen nur auszuführen, wenn bestimmte Browser-Typen am Werk sind.
- Ein CGI-Script kann die CGI-Umgebungsvariable
HTTP_USER_AGENTauslesen, um herauszufinden, von welcher Client-Software es aufgerufen wurde. Auch dabei kann die Information dazu genutzt werden, um bestimmte Anweisungen abhängig auszuführen oder nicht auszuführen. - Bei Statistiken zu einem Web-Projekt gibt es in der Regel auch eine Statistiksorte, die Zugriffszahlen nach Browser-Typen sortiert aufschlüsselt. Grundlage dafür sind ebenfalls die Client-Identifikationen, die der Web-Server bei den Aufrufen erhalten hat.
Stand heute
Da in der Zeit der Browserkriege User-Agent-Kennungen dazu gebraucht wurden, andere Browser auzuschließen, konnte z. B der „neue“ Internet Explorer zwar Frames, wurde aber aufgrund der fehlenden Kennung vom Zugriff auf diese Seite ausgeschlossen. Deshalb geben sich alle Browser als Mozilla aus.
Die Eigenschaft NavigatorID.appCodeName speicherte den Spitznamen des Browsers. Dieses Feature wurde von Netscape deshalb erfunden, weil der Netscape-Browser den Spitznamen "Mozilla" trägt. Diese Eigenschaft ist mittlerweile obsolet, da sich kein Browser an das Schema hält.
Der Internet Explorer gab sich von Anfang an als Mozilla aus, damit auf Netscape zugeschnittene Seiten dargestellt werden konnten.
In Windows Phone sollte der User-Agent ein iPhone vorspiegeln, damit für iOS und Android optimierte Seiten auch auf mobilen Windows-Geräten dargestellt werden sollten. Dies war nötig, da viele Programmierer sich alleine auf User-Agent-Abfragen anstelle einer feature detection verließen.[1]
Verwende für …
- JavaScript Abfragen, ob ein Objekt existiert
- CSS die @supports-Regel
Weblinks
- developers.whatismybrowser.com: Liste verschiedener Kennungen
- webaim.org: lustige Geschichte der User-Agent-Kennungen, englisch
- Die Geschichte der User-Agent-Strings (deutsche Übersetzung von Alexander Stannigel