35

抱歉,我只是自己测试一下,但我目前没有我的 mac。在 UIWebView 内部发出的 Web 请求是否会发送与从移动 Safari 发出的 Web 请求相同的用户代理信息?

4

2 回答 2

39

从 UIWebView 发出的 Web 请求不会在用户代理字符串中包含单词“Safari”。从 Mobile Safari 发出的 Web 请求会。这是我发现的确定请求来自应用程序内部还是来自 Mobile Safari 的最佳方式。

来自 App 内 UIWebView 的示例用户代理:

User-Agent: Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Mobile

来自 Mobile Safari 的示例用户代理:

User-Agent: Mozilla/5.0 (iPad; U; CPU OS 4_3_2 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8H7 Safari
于 2011-05-06T19:49:18.660 回答
14

独立的移动 Safari 用户代理字符串包含单词“版本”,而 uiWebView 用户代理字符串不包含。因此,可以修改检测脚本以使用最新版本的 iOS,如下所示:

var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Version)/i.test(navigator.userAgent);
于 2014-04-04T00:54:51.460 回答