IOS:SSL错误-页面未在WKWebView中加载,但在Safari中加载

iOS: SSL error - page not loading in WKWebView but loads in Safari(IOS:SSL错误-页面未在WKWebView中加载,但在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设置,特别是启用了NSAllowsArbitraryLoadsInWebContentNSAllowsArbitraryLoads,但没有效果。

推荐答案

正向保密

原来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中加载