15

我有一个网页,从 iOS 设备查看时显示的内容略有不同。为了检测有问题的设备,站点会在用户代理字符串中查找iPad;iPod;或。iPhone;

这在所有 iOS 设备上的 Safari 上都能完美运行。使用适用于 iOS 的 Chrome 进行测试,它适用于 iPhone 和 iPad 1,但不适用于 iPad 3。该网站正在获取以下(意外)用户代理字符串:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/534.53.11 (KHTML, like Gecko) Version/5.1.3 Safari/534.53.10

这似乎与 chrome 菜单中的“请求桌面站点”选项有关(桌面 chrome 中的扳手图标是什么)。对于我的网站,它被禁用并且似乎被锁定到桌面而不是移动网站。对于其他站点,它已启用,并且在选择时会导致发送不同的用户代理字符串。例如:尝试http://ifconfig.me/all

所以我的问题是:

  • Chrome 使用什么标准来决定是否启用此选项
  • 鉴于 Chrome 已将此站点强制为桌面站点,我如何呈现 iOS 特定内容(在我的情况下,链接使用由我的应用程序处理的协议)

如果您想自己测试,这里有一个页面,它简单地反映了用户代理字符串。

4

1 回答 1

14

浏览器将根据您是否充当伪装成桌面浏览器的移动浏览器,在使用两个用户代理字符串之间切换。

用户代理:

Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en-gb)
AppleWebKit/534.46.0 (KHTML, like Gecko)
CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3

“请求桌面版本”后的用户代理:

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3)
AppleWebKit/534.53.11 (KHTML, like Gecko)
Version/5.1.3 Safari/534.53.10

这只是向 Web 服务器提示客户端是谁。浏览器应独立于用户代理呈现接收到的 Web 内容。

于 2012-12-27T17:27:30.960 回答