我在iOS8下运行良好的应用程序不再在iOS9下运行。问题是,尽管我的.plist文件中包含以下内容:
<key>NSAppTransportSecurity</key>
<dict>
<!--Include to allow all connections (DANGER)-->
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
以下代码:
NSURL *targetURL = [NSURL URLWithString:_caseStudyListTitleURL];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[_myWebView loadRequest:request];
导致错误:
NSURLSession / NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9813)
这当然会导致显示空的webView。
应用中的所有其他NSURLSession代码都正常运行。
我在测试iPad上运行XCode 7 Beta 3和iOS 9。
对此有任何想法将不胜感激!
答案 0 :(得分:2)
试试这个解决方案:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>yourdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
答案 1 :(得分:0)
这种情况正在发生,因为您使用的是自签名证书,因此需要添加一些额外的代码。因为默认情况下iOS会拒绝所有不受信任的https连接。
限制不受信任的连接是非常好的默认行为,任何禁用此操作都是非常危险的。
使用此方法绕过身份验证质询:
-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{
//code to cancel authentication challenge
}
如果您不知道如何使用它取消身份验证质询,那么您可以从article regarding loading HTTPS url in WebView找到一些很好的帮助。