我有一个移动应用程序,有几个人在自己的服务器上运行该应用程序。因此,没有集中式服务器。其中许多用户使用自签名证书(因为他们没有在WAN上公开服务器和/或使用VPN)
在尝试将我的应用程序从UI WebView for iOS迁移到WKWebview时,我遇到了问题。
首先,我正在使用cordova-plugin-advanced-http进行HTTP访问。不幸的是,它的setSSLCertMode("nocheck", {})
不适用于iOS中的自签名证书。在Android中运作良好。我也为此created遇到了一个问题。
为使事情正常进行,我添加了 (我尝试将其插入代码块中,但是它一直在切断代码,请看图...)
<config-file parent="NSAppTransportSecurity" target="*-Info.plist">
<dict>
<key>NSAllowsArbitraryLoads</key>
<true />
</dict>
</config-file>
这解决了连接问题。但是,我还需要使用<img src= />
从该自签名证书服务器显示图像。这需要我添加:
<config-file parent="NSAppTransportSecurity" target="*-Info.plist">
<dict>
<key>NSAllowsArbitraryLoads</key>
<true />
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true />
</dict>
</config-file>
但是似乎添加NSAllowsArbitraryLoadsInWebContent
会导致NSAllowsArbitraryLoads
出现问题,并且我的连接再次失败。
有人经历过吗?有解决方法吗?
我知道添加这些密钥会触发一次苹果审核-我很确定我有一个合理的答案:我不控制服务器-使用我的应用的每个用户都有自己的
谢谢
编辑:我刚刚在其他地方读到,如果IOS 10+同时检测到两个密钥,它将NSAllowsArbitraryLoads
忽略,因为NSAllowsArbitraryLoadsInWebContent
的限制更大。它还说,仅执行NSAllowsArbitraryLoads
就应同时显示WKWebView图像和常规HTTP连接。对我来说似乎并非如此。这是我仅对自签名证书使用NSAllowsArbitraryLoads
时看到的错误