【发布时间】:2018-10-31 10:47:22
【问题描述】:
我在使用 Swift 从 XCode 调用 HTTPS 服务时遇到错误,我不明白为什么。我使用的 URL 是 HTTPS URL,服务调用工作正常,但我必须将“允许任意加载”设置设置为 YES,服务调用才能正常工作。如果我没有启用该设置,则服务调用将失败并显示以下内容:
2018-10-31 09:56:57.362568+0200 APPNAME[1691:69141] [BoringSSL]boringssl_context_alert_callback_handler(3747) [C1.1:2][0x7fcb6171e660] 警报级别:致命,描述:协议版本 2018-10-31 09:56:57.362750+0200 APPNAME[1691:69141] [BoringSSL]boringssl_context_error_print(3699)boringssl ctx 0x600000a87ea0: 140511489945352:error:100000f0:SSL 例程:OPENSSL_internal:UNSUPPORTED_PROTOCOL:/BuildRoot/Library/Caches/com.apple.xbs/Sources/boringssl_Sim/boringssl-109.202.1/ssl/handshake_client.cc:569: 2018-10-31 09:56:57.363026+0200 APPNAME[1691:69141] [BoringSSL]boringssl_context_get_error_code(3540) [C1.1:2][0x7fcb6171e660] SSL_AD_PROTOCOL_VERSION 2018-10-31 09:56:57.369545+0200 APPNAME[1691:69141] TIC TCP 连接失败 [1:0x600003d95c80]: 3:-9836 Err(-9836) 2018-10-31 09:56:57.375719+0200 APPNAME[1691:69141] NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL, -9836) 2018-10-31 09:56:57.375903+0200 APPNAME[1691:69141] 任务。 HTTP 加载失败(错误代码:-1200 [3:-9836]) 2018-10-31 09:56:57.376267+0200 APPNAME[1691:69140] 任务 . 以错误结束 - 代码:-1200 在 /todos/1 上调用 GET 时出错 错误域=NSURLErrorDomain 代码=-1200 “发生 SSL 错误,无法与服务器建立安全连接。” UserInfo={_kCFStreamErrorCodeKey=-9836, NSLocalizedRecoverySuggestion=您还是要连接到服务器吗?, NSUnderlyingError=0x6000006c8030 {错误域=kCFErrorDomainCFNetwork 代码=-1200 "(null)" UserInfo={_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9836, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9836}}, NSLocalizedDescription=发生 SSL 错误,无法与服务器建立安全连接。, NSErrorFailingURLKey=https://MYURL, NSErrorFailingURLStringKey=https:/MYURL, _kCFStreamErrorDomainKey=3}
我不明白为什么会出现此错误,因为 URL 可以在未启用设置的情况下安全连接,那么为什么在设置关闭且我仍在使用 HTTPS 时会出现此错误?
任何帮助将不胜感激。
【问题讨论】:
-
您能提供您尝试加载的网址吗??
-
它使用受信任的证书在我们的域本地托管:https:/domain:port/token - 第一个调用是获取令牌。正如我所说,它在设置打开时可以正常工作,但如果设置不存在,我会收到上述错误。
-
试试
nscurl --atsdiagnostics --verbose YOUR_URL看看ATS认为你需要设置哪些参数。 -
在连接到
https://www.yahoo.com时,我有相同的_kCFStreamErrorCodeKey=-9836。它与 Apple 的ATS无关。我在一个不允许通过我的 iOS 模拟器访问https://www.yahoo.com的公司网络上(因为模拟器继承了我锁定机器的所有限制)。希望对某人有所帮助。