iOS 9中的HTTPS请求:NSURLSession/NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9802)

Vig*_*san 15 ios ios9

我正在更新我的应用以适应Apple的新ATS.如果没有对Plist-Info进行任何更改,以下代码会在vanilla`iOS sendSynchronousRequest()9模拟器中引发错误.

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];
Run Code Online (Sandbox Code Playgroud)

错误:

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

有关这个问题可能背后的想法吗?

Ps:据我所知,NSURLConnection已被弃用.但是如果我加入AllowArbitraryLoads,这个调用就可以找到Plist.

Vig*_*san 14

NSURLSession/NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9802)对应于不支持"Forward Secrecy"的服务器.

要解决此问题,请将域异常添加到.plist文件,如下所示:

<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>
Run Code Online (Sandbox Code Playgroud)


pkc*_*456 9

在plist文件中添加一个新行.

在plist文件中添加一个新行


小智 6

我在info.plist中添加了此代码以允许任何请求http:

 <key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

本文列出了Apple for iOS 9及其实现所做的所有更改:

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