中断kCFStreamErrorDomainSSL

时间:2015-09-09 00:26:59

标签: nsurlsession ios9 app-transport-security

我正在尝试调试一个能够进行大量HTTP调用的应用程序。我在控制台看到了这个:

2015-09-08 17:21:01.458 MyApp[3186:3064431] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

我理解如何向我的plist添加异常,但是有没有办法在这些请求无法查看请求内容的情况下添加断点?

3 个答案:

答案 0 :(得分:6)

添加这些断点时,我无法进行大量的堆栈跟踪;然而,这篇博文有助于我弄清楚哪些域名失败了:

http://timekl.com/blog/2015/08/21/shipping-an-app-with-app-transport-security/

tl; dr:将环境变量CFNETWORK_DIAGNOSTICS设置为1(如果需要,请设置环境变量:http://nshipster.com/launch-arguments-and-environment-variables/)。这会将所有CFNetwork活动记录到您在控制台中看到的文件中;搜索该文件以及“失败”#39;并且您可以看到哪些请求失败以及原因。

答案 1 :(得分:3)

尝试在HTTPProtocol::failWithStreamError和/或StrictSecurityPolicy::logInsecureLoadFailure中添加符号断点。

(遗憾的是,这可能不容易获得实际请求的堆栈跟踪,因为此异常与实际请求创建代码异步发生。但无论如何它都可能对您有所帮助。)

答案 2 :(得分:-1)

在使用iOS 9时,我们必须在info.plist中添加以下行,否则任何API调用都无效。

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>dev.YourCompanyName.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<false/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>