本文介绍了IOS:SSL错误-页面未在WKWebView中加载,但在Safari中加载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在我正在开发的应用程序中,我需要处理来自我们的支付服务提供商的3D安全重定向。这些重定向指向向应用程序中的用户显示的WKWebView
中的发卡商网页。
除WKWebView
无法为https://3dsecure.csas.cz/加载并失败并出现以下错误之外,其他情况除外:
Error Domain=NSURLErrorDomain
Code=-1200
"An SSL error has occurred and a secure connection to the server cannot be made."
有趣的是,在Safari或SFSafariViewController
中加载相同的URL没有任何问题。即使是服务器的证书也没有问题:
我已尝试调整应用程序Info.plist
文件中的NSAppTransportSecurity
设置,特别是启用了NSAllowsArbitraryLoadsInWebContent
和NSAllowsArbitraryLoads
,但没有效果。
推荐答案
正向保密
原来3dsecure.csas.cz
的服务器不支持前向保密:https://www.ssllabs.com/ssltest/analyze.html?d=3dsecure.csas.cz&s=194.50.240.77
iOS9及更高版本中的App Transport Security
对所有应用程序连接including webviews(但不包括Safari)
ATS调试
在终端中运行以下命令将运行ATS诊断,并提供有关问题以及如何解决问题的更多信息:
/usr/bin/nscurl --ats-diagnostics --verbose https://3dsecure.csas.cz
应用程序中的ATS异常
允许应用程序中的Webview连接到不支持前向保密的特定服务器可以通过在Info.plist
文件中添加以下内容来实现:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>3dsecure.csas.cz</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
不是面向未来的
需要为每个不支持前向保密的单个域添加此例外。不幸的是,不可能提前知道所有3D安全服务器,因为它们是作为来自支付提供商的重定向来的。我不知道的是,是否可以在不影响整个应用程序的情况下,为任何域名、全局和仅在特定的Webview内设置不要求转发保密。
这篇关于IOS:SSL错误-页面未在WKWebView中加载,但在Safari中加载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!