Wie funktioniert die Chrome-Option "Desktop-Site anfordern"?

94

Wenn ein Benutzer unter iOS Google Chrome auf die Schaltfläche "Desktop-Site anfordern" klickt, was unternimmt der Browser, um eine Desktop-Site aufzurufen? Ich stelle mir eine Art Header auf der Anfrage vor, nach der Websites suchen, oder etwas Ähnliches?

butallmj
quelle

Antworten:

64

Ich denke, der einzige Unterschied ist der User-Agent:Header in der Anfrage.

Hier sind die von Chrome auf meinem Android-Gerät gesendeten User-Agent-Header:

Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19

Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.45 Safari/535.19

Beachten Sie das Wort "Mobile" im ersten und auch die Erwähnung des Android-Systems und -Geräts. Wenn ich diese überprüfe, sehe ich, dass es auch falsche Informationen liefert - nämlich X11 und x86_64 -, die dem von der Desktop Linux-Version von gesendeten Wert genau entsprechen Chrom.

dsh
quelle
14
Ein separater Header wäre genial. User Agent Sniffing ist so schrecklich.
Mu Mind
10
Genau. Manchmal ist die von einigen Standorten implementierte automatische Erkennung und Umleitung äußerst kontraproduktiv und erschwerend.
dsh
5
Eine bessere Lösung wäre die Erkennung von Gerätegröße, Schnittstellen und Funktionen. CSS-Medienabfragen sind ein Schritt in die richtige Richtung.
Brad
1
Diese Funktion wird nicht durch einen einfachen UA-Switch und eine Aktualisierung implementiert. Die Wahrheit ist, dass die meisten mobilen Websites NICHT zum Desktop zurückkehren, wenn sie mit einer Desktop-UA-Zeichenfolge geladen werden. Also verwendet Safari Ihre ursprüngliche Anfrage? Nee. Es scheint auch dann zu funktionieren, wenn Sie ursprünglich die URL für die mobile Site eingegeben haben. Ich weiß nicht, wie es implementiert wird, da der Name der mobilen Versionen keineswegs standardisiert ist, aber es gibt etwas Klügeres als eine einfache UA-Änderung.
Andrew G
Ich möchte darauf hinweisen, dass sich das "Layout-Ansichtsfenster" auch ändern würde, wenn die Option "Desktop-Site anfordern" ausgelöst wird, was sich auf die Medienabfrage auswirkt. Weitere Informationen zum Layout-Ansichtsfenster finden Sie im-Mobile-Web-Handbuch .
Rick
19

Ich wollte nur darauf hinweisen, dass Chrome jetzt nicht nur User-Agentdas ursprüngliche Meta-Tag des Ansichtsfensters ändert, sondern es auch ignoriert, wenn Sie "Desktop Site anfordern". Daher ist es nicht mehr erforderlich, das zu schnüffeln, User-Agentund Sie können sich auf die Änderung des Ansichtsfensters verlassen, wie dies bei den meisten reaktionsfähigen Websites automatisch der Fall ist. Weitere Informationen finden Sie in dieser Änderung .

Thomas
quelle
1
Dank dafür. Meine eigene sehr einfache Website verhält sich ganz anders, wenn sie nicht angeklickt wird, und ich konnte nicht verstehen, warum, da ich nur Medienabfragen in CSS mache.
R Reveley
17

Ein weiterer geringfügiger Unterschied besteht darin, dass die Anfrage anscheinend an die zuletzt absichtlich eingegebene URL gesendet wurde, bevor sie von Re-Directors verschoben wurde. Beispielsweise:

Gegeben: somesite.com schnüffelt den Agenten, sieht Android und führt eine document.location + = "/ m" aus.

Dann: Der Browser hat eine URL von somesite.com/m

Aber: Wenn Sie "Desktop-Site anfordern", wird der User-Agent geändert und von somesite.com erneut angefordert

Es sei denn: Sie haben die mobile URL von somesite.com/m direkt aufgerufen. In diesem Fall wird nur somesite.com/m neu geladen.

Ich würde erwarten, dass dies mit HTTP 301- und 302-Weiterleitungen funktioniert, ich weiß, dass es mit Änderungen der document.location funktioniert (zumindest wie beschrieben), und würde spekulieren, dass es mit <meta> Aktualisierungen funktioniert.

Jason Miller
quelle
Haben Sie Ihre Antwort darauf gestützt ?
Keale
@ Keale wahrscheinlich umgekehrt, angesichts der Zeitstempel
verbumSapienti
Wenn eine POST-Anfrage eine 302 oder 303 erhält, die ein GET für eine andere URL vorschlägt, ändert der Benutzer die Einstellung "Desktop-Ansicht". Der Browser sendet eine GET-Anfrage an die ursprüngliche URL, die die 302/303 zurückgegeben hat (wobei die POST-Parameter verloren gehen) ). Scheint, dass sowohl Firefox als auch Chrome dies tun und IMO ist dies definitiv nicht das, was passieren sollte.
Jake
-2

Dieses Javascript-Snippet macht effektiv dasselbe:

function requestDesktopSite() {
    document.getElementsByTagName('meta')['viewport'].content='min-width: 980px;';
}
<button onclick="requestDesktopSite()">Request Desktop Site</button>

10us
quelle