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


94

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

Answers:


64

我认为唯一的区别是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版本发送的值非常匹配。铬。


14
一个单独的标题将是辉煌的。用户代理嗅探是如此可怕。
Mu Mind

10
我同意。有时,某些站点实施的自动检测和重定向会适得其反,而且会加剧这种情况。
dsh 2012年

5
更好的解决方案是检测设备的大小,接口和功能。CSS媒体查询是朝正确方向迈出的一步。
布拉德

1
简单的UA切换和刷新无法实现此功能。事实是,如果大多数移动网站加载了桌面UA字符串,它们将不会切换回桌面。那么Safari使用您的原始请求了吗?不。即使您最初输入了移动网站的URL,它也似乎可以正常工作。我不知道它是如何实现的,因为移动版本的名称绝不是标准化的,但是比简单的UA更改更智能。
Andrew G

我想指出的是,如果触发“请求桌面站点”选项,那么“布局视口”也会改变,这会影响媒体查询。查看“移动网络手册”以获取有关布局视口的更多信息。
瑞克

19

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


1
感谢那。我自己的非常简单的网站在未单击时表现出很大的不同,我不明白为什么,除了CSS中的媒体查询外,我什么也没做。
R Reveley '17

17

另一个细微的区别是,该请求似乎是在任何重定向器将其移到该URL之前到达的。例如:

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

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

但是:如果您“请求桌面站点”,它将更改User-Agent并从somesite.com重新请求

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

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


您是否以此为依据?
Keale 2015年

考虑到时间戳
@

看起来,如果POST请求收到302或303建议使用其他URL的GET,则用户更改了“桌面视图”设置,浏览器将向返回302/303的原始URL提交GET请求(丢失POST参数) )。似乎Firefox和Chrome都可以这样做,而IMO绝对不是应该发生的事情。
杰克

-2

此javascript代码段将有效地执行以下操作:

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.