98

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

4

4 回答 4

68

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

以下是 Chrome 在我的 Android 设备上发送的 User-Agent 标头:

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

请注意第一个中的“Mobile”一词,还提到了 Android 系统和设备。检查这些,我发现它还提供了虚假信息 - 即 X11 和 x86_64 - 与桌面 Linux 版本发送的值非常匹配铬合金。

于 2012-07-28T16:19:51.510 回答
24

只是想指出,User-Agent如果您“请求桌面站点”,Chrome 现在不仅会更改而且还会忽略原始视口元标记。因此,不再需要嗅探User-Agent,您可以依赖视口更改,因为大多数响应式站点会自动执行此操作。请参阅此更改以获取更多参考。

于 2017-08-15T10:14:56.890 回答
17

另一个细微的差别是,在任何重定向器移动它之前,请求似乎已经到达了最后一个有意输入的 URL。例如:

给定: somesite.com 嗅探代理,查看 Android,并执行 document.location += "/m";

那么:浏览器会有一个 URL somesite.com/m

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

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

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

于 2013-01-31T23:59:08.087 回答
-2

这个 javascript 片段将有效地做同样的事情:

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

于 2017-09-06T15:38:33.600 回答