Google chrome Chrome';s";“请求桌面站点”;选项工作?

Google chrome Chrome';s";“请求桌面站点”;选项工作?,google-chrome,mobile,Google Chrome,Mobile,对于iOS google chrome,当用户点击“请求桌面站点”按钮时,浏览器会如何尝试打开桌面站点?我想象站点正在寻找的请求上的某种头,或者类似的东西?我认为唯一的区别是请求中的用户代理:头 以下是Chrome在我的Android设备上发送的用户代理标题: Mozilla/5.0 (Linux; Android 4.0.4; Galaxy Nexus Build/IMM76K) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.1

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

我认为唯一的区别是请求中的
用户代理:

以下是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

注意这个词“移动”在第一个,也提到了安卓系统和设备。通过检查这些,我发现它还提供了错误的信息,即X11和x86_64,以便与桌面Linux版本的Chrome发送的值紧密匹配。

另一个细微的区别是,请求似乎是在任何重新控制器移动它之前,最后故意输入的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现在不仅更改
用户代理
,而且如果您“请求桌面站点”。因此不再需要嗅探
用户代理
,您可以像大多数响应站点一样依赖视口更改。请参阅以获取进一步参考。

此javascript片段将有效地执行相同操作:

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

Request Desktop Site
一个单独的标题会很好。用户代理嗅探太可怕了。我同意。有时一些网站实施的自动检测和重定向会产生极大的反效果,并且会加重问题。更好的解决方案是检测设备大小、接口和功能。CSS媒体查询是他的方向是正确的。这个功能不是通过简单的UA切换和刷新来实现的。事实是,如果加载了桌面UA字符串,大多数移动站点不会切换回桌面。因此Safari使用您的原始请求?不是。即使您最初键入移动站点的URL,它似乎也能工作。我不知道如何操作ts的实现是因为移动版本的名称并没有标准化,但是有一个比简单的UA更改更聪明的事情发生了。我想指出,如果触发“请求桌面站点”,那么“布局视口”也会改变选项,该选项影响媒体查询。查看《移动网络手册》了解更多关于布局视口的信息。您的答案来自哪里?@Keale可能来自另一个方面,如果POST请求得到302或303,建议获取另一个URL,则用户更改“桌面视图”设置,浏览器将向返回302/303的原始URL提交GET请求(丢失POST参数)。看起来Firefox和Chrome都这么做了,我想这绝对不是应该发生的事情。谢谢。我自己的非常简单的网站在没有点击的情况下表现得非常不同,我不明白为什么,因为我只做CSS中的媒体查询。