对于 iOS 谷歌浏览器,当用户点击“请求桌面站点”按钮时,浏览器会做什么来尝试调出桌面站点?我想像网站正在寻找的请求中的某种标题,或类似的东西?
4 回答
我认为唯一的区别是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 版本发送的值非常匹配铬合金。
只是想指出,User-Agent
如果您“请求桌面站点”,Chrome 现在不仅会更改而且还会忽略原始视口元标记。因此,不再需要嗅探User-Agent
,您可以依赖视口更改,因为大多数响应式站点会自动执行此操作。请参阅此更改以获取更多参考。
另一个细微的差别是,在任何重定向器移动它之前,请求似乎已经到达了最后一个有意输入的 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> 刷新。
这个 javascript 片段将有效地做同样的事情:
function requestDesktopSite() {
document.getElementsByTagName('meta')['viewport'].content='min-width: 980px;';
}
<button onclick="requestDesktopSite()">Request Desktop Site</button>