我已经阅读了有关此主题的每个答案,但我仍然遇到localhost
上运行自签名证书的问题。我的iOS测试非常简单:
Alamofire.request("https://localhost:4567/hello").responseJSON { (dataRes) in
guard let jsonData = dataRes.data else { return }
NSLog("Received JSON: \(jsonData)")
}
导致输出结果:
2016-11-06 10:59:12.566 Chatty[20454:772766] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
2016-11-06 10:59:12.583 Chatty[20454:772681] Received JSON: 0 bytes
使用以下Info.plist
:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<false/>
<key>NSExceptionDomains</key>
<dict>
<key>localhost:4567</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
</dict>
</dict>
我也尝试过没有端口,我甚至尝试了可怕的:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
哪个失败,错误代码不同(-9813
)
2016-11-06 11:01:22.773 Chatty[20750:776671] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9813)
其他应用程序(如我的Mocha测试)连接正常,Safari也是如此:
理想情况下,我想更新我的iOS模拟器,只接受这个自签名证书(我有.cer
文件,甚至将它拖入模拟器并“信任”它没有明显的效果),但如果这是唯一的方法,我也可以排除localhost
,但似乎无法使 工作。
我错过了什么?
修改:将我的Info.plist
更新为以下内容还会向我发送-9802
作为错误代码:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost:4567</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>