我正在更新我的应用程序以适应 Apple 的新 ATS .在不对 Plist-Info 进行任何更改的情况下,以下代码会在 vanilla `iOS 9 模拟器中的 sendSynchronousRequest()
处抛出错误。
NSURL *url =[NSURL URLWithString:@"https://Google.com"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]init];
[request setHTTPMethod:@"GET"];
[request setURL:url];
NSURLResponse *urlResponse = nil;
NSError *error = nil;
NSData *reponse = [NSURLConnection sendSynchronousRequest:request
returningResponse:&urlResponse
error:&error];
错误:
NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
关于这个问题背后的原因有什么想法吗?
注意:我知道 NSURLConnection
已弃用。但是,如果我在 Plist
中添加 AllowArbitraryLoads
,此调用会起作用。
最佳答案
NSURLSession/NSURLConnection HTTP 加载失败(kCFStreamErrorDomainSSL,-9802) 对应不支持“前向保密”的服务器。
要解决此问题,请按如下方式向 .plist 文件添加域异常(exception):
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>test.testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
关于ios - iOS 9 中的 HTTPS 请求 : NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31662134/