xCode 9 - iOS 11:NSURLConnection - sendAsynchronousRequest失败

时间:2017-06-22 11:57:25

标签: ios11 xcode9-beta

我刚刚下载了最新版本的xCode(9.0 beta(9M136h))。

但是,当我尝试在iOS 11模拟器中向我的服务器发出请求时(使用NSURLConnection sendAsynchronousRequest),收到错误:

NSURLSession / NSURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9807) NSURLConnection完成错误 - 代码-1202

NSError对象包含消息 - @“NSLocalizedDescription”:@“此服务器的证书无效。您可能连接到假装为”***“的服务器,这可能会使您的机密信息面临风险。 “

plist包含:

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

所以这不是问题(我猜)

毋庸置疑,它在iOS 10/9/8中工作

有什么建议吗?

提前致谢!

3 个答案:

答案 0 :(得分:6)

您需要允许应用程序运行HTTP(无S)连接。默认情况下,Apple仅允许HTTPS:

  1. 转到您的info.plist

    here

  2. 然后按任何一个上面的加号图标
  3. 搜索&#34;应用传输安全设置&#34; here
  4. 点击左侧的小箭头,找到&#34;允许任意加载&#34;,默认设置为&#34; NO&#34;将其改为&#34;是&#34;

答案 1 :(得分:1)

对于在 iOS 11 中出现此错误的所有人,请确保您正在使用服务器中的有效(安全)证书。

在我们的案例中,证书不够严格。

一旦我们的服务器人员集成了新的有效证书,问题就消失了。

检查证书是否安全的一种方法是通过浏览器中有问题的链接。

因此,您可能会发现连接不安全:

enter image description here

答案 2 :(得分:0)

由于您的证书错误无效,我将根据我的个人安全措施提出以下建议。

如果您仍然在与CA签订服务条款,请让他们为您颁发新的有效证书。

检查您的钥匙串设置,确保没有缺少CA证书。

或者,您可以发布自己的自签名证书以进行测试,并将其作为信任锚添加到本地Keychain。搜索&#34;如何创建自签名x509证书&#34;将返回你可能会发现有用的东西。