抱歉,我会亲自测试一下,但我目前没有我的mac。在UIWebView内部发出的Web请求是否发送了与移动Safari发出的Web请求相同的用户代理信息?
答案 0 :(得分:34)
从UIWebView发出的Web请求不会在User Agent字符串中包含单词“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
答案 1 :(得分:12)
独立移动Safari用户代理字符串包含单词' Version',而uiWebView用户代理字符串则不包含。因此,可以修改检测脚本以使用最新版本的iOS,如下所示:
var is_uiwebview = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Version)/i.test(navigator.userAgent);