iOS 9 … WebView是免除应用程序传输安全例外(ATS)规则,阻止不安全的HTTP主机?
在iOS 9中,除非将特定主机列入白名单,否则Apple将阻止应用程序的不安全HTTP连接。
http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/
由于显而易见的原因,WebView是否免除这些规则,还是我们仍然期望将浏览器打开的主机列入白名单…包括给定页面的所有链接?
我不确定这是我们的责任还是免责。
SFSafariViewController可以显示没有NSAppTransportSecurity密钥的HTTP。
UIWebView和WKWebView需要上面提到的NSAppTransportSecurity键来显示HTTP页面。
根据Apple指导,我已经在我的应用程序.plist中插入了以下内容:
<key>NSAppTransportSecurity</key> <dict> <!--Include to allow all connections - with and without SSL (DANGEROUS)--> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
当我尝试加载我的webView(从HTTPS服务器不下),我得到以下错误,它不会加载。
NSURLSession / NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9813)
所以我看起来不仅没有豁免,即使你对.plist进行了正确的补充,他们也不能工作。
这个问题最初是关于iOS 9的; 不过,根据苹果的文件 :
从iOS 10.0及更高版本开始,支持以下子项:
- NSAllowsArbitraryLoadsInWebContent
- …
使用NSAllowsArbitraryLoadsInWebContent,以便您不需要白色列出WebView可能加载的每个页面。
保持NSAllowsArbitraryLoads保持与iOS 9的向后兼容性,并启用Xcode 8项目Info.plist中的新设置:
如果您的应用程序(例如第三方Web浏览器)需要加载任意内容,Apple提供了一种完全禁用ATS的方法,但是我怀疑您谨慎使用此function是明智的做法:
<key>NSAppTransportSecurity</key> <dict> <!--Include to allow all connections (DANGER)--> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
- 如何在UINavigationController的单个视图上强制特定的UIInterfaceOrientation?
- WKWebView中的文本select:WKSelectionGranularityCharacter