iOS: SSL error - page not loading in WKWebView but loads in Safari(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中加载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:IOS:SSL错误-页面未在WKWebView中加载,但在Safari中加载
- 使用自定义动画时在 iOS9 上忽略 edgesForExtendedLayout 2022-01-01
- Android - 我如何找出用户有多少未读电子邮件? 2022-01-01
- Android - 拆分 Drawable 2022-01-01
- 用 Swift 实现 UITextFieldDelegate 2022-01-01
- 想使用ViewPager,无法识别android.support.*? 2022-01-01
- MalformedJsonException:在第1行第1列路径中使用JsonReader.setLenient(True)接受格式错误的JSON 2022-01-01
- 如何检查发送到 Android 应用程序的 Firebase 消息的传递状态? 2022-01-01
- 在测试浓缩咖啡时,Android设备不会在屏幕上启动活动 2022-01-01
- android 4中的android RadioButton问题 2022-01-01
- Android viewpager检测滑动超出范围 2022-01-01