在 Ionic 应用程序配置文件中启用证书透明度后,iOS 10.3 的 AJAX 调用开始失败,并出现 SSL 错误。但是,它在iOS 11及更高版本中没有任何问题。与服务器的连接适用于本机iOS应用程序,Angular Web应用程序。它仅在科尔多瓦编译的应用程序中失败。
导致 AJAX 通信失败的配置
<access minimum-tls-version="TLSv1.2" origin="https://example.com" requires-certificate-transparency="true" requires-forward-secrecy="false" />
通信与 XCode 中的以下设置一起工作
<key>NSExceptionDomains</key>
<dict>
<key>example.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
在网络日志中,应用程序似乎在 SSL 握手期间发送未知。
编辑- 必须重新审视问题并正确阅读
起初我认为配置可能有问题,但后来:
SSL 握手期间未知
引起了我的注意。
从iOS 10.3开始,新自定义证书的默认值为不 相信他们。 是的,此选项在 10.3 之前存在,但未强制执行,因此默认情况下处于打开状态。 您可以在查尔斯代理博客上找到此信息 - 该博客与应用程序相连,但我认为它对您的情况也有效。
要启用证书,请执行以下操作:
您必须转到Settings > General > About > Certificate Trust Settings
并启用所需的证书。
你可以在这里找到它提到的技术问答QA1948 HTTPS 和测试服务器。
另外:
您可以使用nscurl
工具来诊断 ATS 连接问题。
用法/usr/bin/nscurl --ats-diagnostics [--verbose] URL
然后您将更详细地失败。