【发布时间】:2016-09-18 03:00:37
【问题描述】:
我正在制作一个基于 isbn 返回书评的应用。我正在尝试在 Web 视图中加载 Goodreads 评论小部件,但出现两个错误:
CFNetwork SSLHandshake failed (-9824) 和 NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)
我尝试了其他几个网址并得到相同的结果。
这是我调用 url 的代码:
override func viewDidLoad() {
super.viewDidLoad()
let url = NSURL (string: "https://www.goodreads.com/api/index#book.show_by_isbn");
let requestObj = NSURLRequest(URL: url!);
webView.loadRequest(requestObj);
}
在 info.plist 中,我在 Exception Domains 字典中有一个 goodreads.com 字典。我包含在 goodreads.com NSIncludesSubdomains, NSExceptionsAllowsInsecureHTTPLoads, and NSExceptionsMinimumTLSVersion(设置为 TLSv1.1)
有什么明显的地方我出错了吗?域名错了吗?
编辑:对于以后阅读本文的任何人,我想我已经解决了。这个页面 (Does App Store reject submission if NSAllowsArbitraryLoads set to YES?) 帮助很大。
如果您使用NSAllowsArbitraryLoads,App Store 将拒绝您的应用。但是,他们将允许NSAllowsArbitraryLoadsInWebContent
根据 Apple 开发者指南,
"将此键的值设置为 YES 以获得 ATS 政策的豁免 您的应用程序的 Web 视图,而不会影响 ATS 规定的安全性 你的 NSURLSession 连接。为了支持旧版本的 iOS 和 macOS(早于 iOS 10),您可以使用此密钥并仍然手动配置 ATS。去做 因此,将此键的值设置为 YES 并配置 NSAllowsArbitraryLoads 地铁。如果您将此密钥添加到您的 Info.plist 文件,然后,无论密钥的值如何,ATS 都会忽略 NSAllowsArbitraryLoads 键的值。”
【问题讨论】:
-
TLS 1.1 太低了。
-
我尝试了 1.2 仍然收到同样的错误。
-
@Natarajan 我以前读过那篇文章,但我没有找到满意的答案。有什么我错过的吗?
标签: ios swift xcode uiwebview nsurlrequest