对于 iOS 谷歌浏览器,当用户点击“请求桌面站点”按钮时,浏览器会做什么来尝试打开桌面站点?我想象网站正在寻找的请求上有某种标头,或者类似的东西?
我认为唯一的区别是请求中的
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 版本发送的值紧密匹配铬合金。
只是想指出,如果您“请求桌面站点”,Chrome 现在不仅会更改
User-Agent
,还会忽略原始视口元标记。因此,不再需要嗅探 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 更改(至少如上所述),并且推测它适用于 刷新。
我已经宣布好几天了,有人正在我的浏览器 chrome / android 12 tab 手机/dekstap 中工作
这个 javascript 片段将有效地执行相同的操作:
function requestDesktopSite() {
document.getElementsByTagName('meta')['viewport'].content='min-width: 980px;';
}
<button onclick="requestDesktopSite()">Request Desktop Site</button>