Chrome的“请求桌面版网站”选项如何运作?

时间:2012-07-28 15:47:59

标签: google-chrome mobile

对于iOS谷歌浏览器,当用户点击“请求桌面网站”按钮时,浏览器会尝试打开桌面网站做些什么?我想象网站正在寻找的某种类型的标题,或类似的东西?

4 个答案:

答案 0 :(得分:57)

我认为唯一的区别是请求中的User-Agent:标头。

以下是Chrome在我的Android设备上发送的用户代理标头:

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

注意第一个中的“移动”一词,还提到Android系统和设备。检查这些,我看到它还提供虚假信息 - 即X11和x86_64 - 以紧密匹配桌面发送的值Linux版Chrome。

答案 1 :(得分:14)

另一个细微的区别是,在任何重新导演移动之前,请求似乎是最后一次有意输入的URL。例如:

鉴于: somesite.com嗅探代理,看到Android,并执行document.location + =“/ m”;

然后:浏览器的网址为somesite.com/m

但是:如果您“请求桌面网站”,它将更改用户代理并从somesite.com重新请求

除非:您首先直接访问somesite.com/m的移动网址,在这种情况下,它只会重新加载somesite.com/m。

我希望这适用于HTTP 301和302重定向,我知道它适用于document.location更改(至少如所描述的),并推测它适用于< meta>刷新。

答案 2 :(得分:14)

只是想指出Chrome现在不仅会更改User-Agent,还会忽略原始视口元标记,如果您“请求桌面版网站”。因此,没有必要再嗅探User-Agent,您可以依赖视口更改,因为大多数响应式网站会自动执行。有关详细信息,请参阅this Change

答案 3 :(得分:-3)

此javascript代码段将有效地执行相同的操作:



function requestDesktopSite() {
    document.getElementsByTagName('meta')['viewport'].content='min-width: 980px;';
}

<button onclick="requestDesktopSite()">Request Desktop Site</button>
&#13;
&#13;
&#13;