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中加载
基础教程推荐
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01