iOS 9 ... WebView是否免受阻止不安全HTTP主机的App Transport Security Exceptions(ATS)规则的限制?

Ben*_*ild 21 uiwebview ios wkwebview ios9 app-transport-security

在iOS 9中,Apple阻止应用程序的不安全HTTP连接,除非特定主机列入白名单.

http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/

出于显而易见的原因,WebView是否免除了这些规则,或者我们仍然期望将浏览器打开的主机列入白名单......包括来自给定页面的所有链接?

我不确定这是否是我们的责任,或者是否可以免除.

can*_*boy 27

SFSafariViewController可以在没有NSAppTransportSecurity密钥的情况下显示HTTP.

UIWebViewWKWebView需要上面提到的NSAppTransportSecurity键来显示HTTP页面.


Sco*_*ter 11

我根据Apple指南在我的应用程序.plist中插入了以下内容:

<key>NSAppTransportSecurity</key>
<dict>
     <!--Include to allow all connections - with and without SSL (DANGEROUS)-->
     <key>NSAllowsArbitraryLoads</key>
     <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

当我尝试加载我的webView(从HTTPS服务器不少),我得到以下错误,它不加载.

NSURLSession/NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9813)

所以我看起来不仅它们不是免除的,即使你对.plist进行了正确的添加它们也不起作用.


Ato*_*ean 8

这个问题最初是关于iOS 9的; 但是,根据Apple的文档:

从iOS 10.0及更高版本开始,支持以下子项:

  • NSAllowsArbitraryLoadsInWebContent
  • ...

使用NSAllowsArbitraryLoadsInWebContent,这样您就不需要列出WebView可能加载的每个页面的白名单.

保持NSAllowsArbitraryLoads以保持与iOS 9的向后兼容性,并在此处启用Xcode 8项目Info.plist中的新设置: 在项目中启用ATS