Tom*_*ina 7 safari ssl ios wkwebview
在我正在开发的应用程序中,我需要处理来自我们的支付服务提供商的3-D Secure重定向.这些重定向指向发卡机构的网页,该网页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."
Run Code Online (Sandbox Code Playgroud)
有趣的是,相同的URL加载在Safari或中没有任何问题SFSafariViewController.甚至服务器的证书都可以:
我试图NSAppTransportSecurity在应用程序的Info.plist文件中使用设置,特别是启用NSAllowsArbitraryLoadsInWebContent,NSAllowsArbitraryLoads但它确实没有效果.
Tom*_*ina 13
事实证明,服务器3dsecure.csas.cz不支持Forward Secrecy:https://www.ssllabs.com/ssltest/analyze.html ? d = 3dsecure.csas.cz & s = 194.50.240.77
App Transport Security在iOS9及更高版本中,所有应用程序连接都需要完美的前向保密,包括Web视图(但不包括Safari)
在终端中运行以下命令可运行ATS诊断并告知有关该问题以及如何解决该问题的更多信息:
/usr/bin/nscurl --ats-diagnostics --verbose https://3dsecure.csas.cz
Run Code Online (Sandbox Code Playgroud)
允许应用程序中的webview连接到不支持前向保密的特定服务器可以通过在Info.plist文件中添加以下内容来完成:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>3dsecure.csas.cz</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
</dict>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
需要为不支持前向保密的每个域添加此异常.不幸的是,由于它们来自支付提供商的重定向,所以不可能提前知道所有3-d安全服务器.
我不知道的是,如果不要求任何域,全局和仅在特定的webview中设置前向保密,而不影响整个应用程序.
| 归档时间: |
|
| 查看次数: |
1356 次 |
| 最近记录: |