zoukankan      html  css  js  c++  java
  • NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

    本篇文章由:http://xinpure.com/nsurlsessionnsurlconnection-http-load-failed-kcfstreamerrordomainssl-9802/

    错误描述

    环境:

    iOS9 / Xcode7, Cordova

    错误提示:

    NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)

    百度/Google之后 不难发现报错的原因

    这是因为 iOS9 增加了新特性 App Transport Security (ATS)。详情:App Transport Security (ATS)

    新特性要求 App 内访问的网络必须使用HTTPS协议并且改成 TLS1.2 协议进行传输

    解决方法

    网上提供了一种方不遵循 iOS9 新特性的规则,将 AppTransportSecurity 转为使用用户自定义的设置的方法,据说可以解决此问题~

    讲的最多的一种方法就是修改 (...)/platforms/ios/YOURAPP/YOURAPP-Info.plist 文件,添加以下代码:

    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/>
    </dict>

    还有一种修改 info.list 文件的方法:

    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSExceptionDomains</key>
        <dict>
            <key>YOUDOMAIN(e.g. baidu.com)</key>
            <dict>
                <key>NSIncludesSubdomains</key>
                <true/>
                <key>NSExceptionRequiresForwardSecrecy</key>
                <false/>
            </dict>
        </dict>
    </dict>

    然而这两种方法,我都测试过,并没有什么用。。。

    只能再找方法试试了,找到了这个:修改 (...)/platforms/ios/嘎嚓嘎嚓/Classes/AppDelegate.m 文件,添加以下代码:

    @implementation NSURLRequest(DataController) 
    + (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host 
    { 
        return YES; 
    } 
    @end

    哈哈。。。果然有用,简直 Nice!

    不过,info.list 文件是之前修改过的,然后就觉得是不是只需要修改 AppDelegate.m 文件就可以呢?

    经过验证是不行的,必须同时修改 info.listAppDelegate.m 文件才可以解决此问题。

    info.list 添加第一种代码即可:

    <key>NSAppTransportSecurity</key>
    <dict>
      <key>NSAllowsArbitraryLoads</key>
      <true/>
    </dict>

    参考链接

    http://forum.ionicframework.com/t/nsurlsession-nsurlconnection-http-load-failed/32898

    http://www.tuicool.com/articles/7bY3my

  • 相关阅读:
    UIScrollView(滚动视图)
    NSJSONSerialization(json序列化)
    手势(UIGestureRecognizer)
    mac常用命令
    ios设备相关
    UITextField
    cocos2d学习笔记
    NSTimer(定时器)
    git命令
    Java 线程的终止-interrupt
  • 原文地址:https://www.cnblogs.com/xinpureZhu/p/4906024.html
Copyright © 2011-2022 走看看