Hallo ihr Experten ;),
es wäre nett, wenn mir jemand von euch die im Betreff gestellte Frage beantworten könnte. Um genauer zu verstehen, worum es in der Frage geht, bitte ich euch, zuallererst einmal folgendes PHP-Skript anzusehen:
<?php
echo "User-Agent Header: ".$_SERVER['HTTP_USER_AGENT']."<br>";
echo "User-Agent JavaScript: <script>document.write(navigator.userAgent)</script>";
?>
Wir ihr sehen könnt, gibt das Skript zuerst den vom Client an den Server gesendeten User-Agent-Wert des Headers und dann das dazugehörige JavaScript-Pendant (navigator.userAgent) aus.
Die beiden zurückgegebenen User-Agents sollten doch eigentlich immer gleich lauten, oder? Schließlich dürfte es doch keinen Unterschied machen, ob man den User-Agent client- oder serverseitig abfragt.
Umso verwunderter war ich dann, als ich meinen Browser testweise einen manipulierten Header-User-Agent senden ließ (Erweiterung "Modify Headers" unter Google Chrome); die Header-Variante zeigte brav den "gefälschten" Header an, während sich die "navigator.userAgent"-Ausgabe nicht verändert hatte, also immer noch den Standard-User-Agent meines Browsers [der da wäre: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1] anzeigte.
Muss ich daraus den Schluss ziehen, dass die beiden User-Agents grundsätzlich verschiedene Informationen liefern?
Wenn ja, warum ist das so?
Wäre es dann nicht klüger, immer nur navigator.userAgent abzufragen, da dabei anscheinend stets der "richtige" User-Agent zurückgegeben wird, auch wenn ein manipulierter Header-User-Agent gesendet wird?
(Google jedenfalls wechselt beim Header-User-Agent-Wert "test" in eine Art Kombitabilitätsansicht, scheint sich also (zu Unrecht?) (nur) auf die serverseitige Abfrage zu verlassen ...)
LG LSFR77