【发布时间】:2018-10-05 05:53:45
【问题描述】:
我正在尝试向我的应用程序中的安全服务器发出 POST 请求,但没有证书。当我提出请求时,我在控制台中收到这些错误:
2018-04-24 16:14:22.942030-0400 TIC TCP Conn Failed [8:0x60000017c440]: 1:54 Err(54)
2018-04-24 16:14:22.942779-0400 Task <1E09E1AE-CE51-48C4-9A56-F3738B8FD68F>.<1> HTTP load failed (error code: -1005 [1:54])
2018-04-24 16:14:22.943219-0400 [93037:8075678] Task <1E09E1AE-CE51-48C4-9A56-F3738B8FD68F>.<1> finished with error - code: -1005
在URLSession:didReceiveChallenge 我没有验证证书;我只是打电话给continueWithoutCredentialForAuthenticationChallenge。
我在 Info.plist 中将我的域设置为 ATS 的例外:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>mydomain.net</key>
<dict>
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
我找不到任何关于 Err(54) 和 error code: -1005 含义的文档,因此在进行故障排除时遇到了障碍。值得一提的是,我必须将我的 Mac 连接到我的 VPN 才能 ping 这个服务器,并且我正在我的模拟器中运行它。
我希望听到一些关于可能出现的问题以及如何解决的建议。
【问题讨论】:
-
您要连接的服务器的 URL 是什么? HTTP / HTTPS?您看到的错误与 ATS 无关 - 只是设备/模拟器无法连接到您尝试连接的 URL。要验证,请转到模拟器上的 Safari 并尝试点击相同的 URL。
-
它是 HTTPS。谢谢你的建议。我使用 curl 请求发现我确实可以从命令行发出请求,但我发现问题在于我如何处理(或不处理)
didReceiveChallenge的完成。我要发布一个答案。
标签: ios objective-c https app-transport-security