我在我的iOS应用程序(用户配置文件)中显示了一个网站,其中包含了购买一些服务的选项。购买是在UIWebView内部通过在iframe中打开第三方支付页面来完成的。
当尝试加载此支付页面时,将向webView:didFailLoadWithError:委托方法发送SSL错误。
SSL错误:
错误UserInfo={NSErrorFailingURLStringKey=https://SOME-URL,代码=-1200\“发生了SSL错误,无法建立到服务器的安全连接。\”UserInfo={_kCFStreamErrorCodeKey=-9806,您希望无论如何连接到服务器的NSLocalizedRecoverySuggestion=Would?,NSUnderlyingError=0x610000255c90 {Error Domain=kCFErrorDomainCFNetwork Code=-1200 \“发生了SSL错误,无法与服务器建立安全连接。\”无论如何,您喜欢连接到服务器的Domain=NSURLErrorDomain NSLocalizedRecoverySuggestion=Would ?发生了_kCFNetworkCFStreamSSLErrorOriginalValue=-9806,_kCFStreamPropertySSLClientCertificateState=0,NSLocalizedDescription=An SSL错误,无法建立到服务器的安全连接。_kCFStreamErrorDomainKey=3、NSErrorFailingURLKey=https://SOME-URL、_kCFStreamErrorCodeKey=-9806}}。NSLocalizedDescription=An SSL错误发生,无法与服务器建立安全连接。NSErrorFailingURLKey=https://SOME-URL、NSErrorFailingURLStringKey=https://SOME-URL、_kCFStreamErrorDomainKey=3}
我已经在浏览器中测试了这个URL,我发现它使用了TLSv1.2,所以我不明白问题出在哪里。
在iOS Safari和安卓应用程序中,同样的iframe也能正常工作.
当我在NSAppTransportSecurity中禁用ATS ( Info.plist )时,就会显示支付页面,但我担心苹果不会允许它是AppStore (而且我不想这么做--这是一个支付页面,应该是安全的)。
这是支付网址:Server/PerformTransaction?txId=a51270b0-9cb5-43aa-83cc-1cb0abe08691
发布于 2017-09-02 18:43:33
我将对Info.plist中的webview、域和TLS版本设置一个例外,以确保ATS层不会阻塞任何连接。
就像这样:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>creditguard.co.il</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
</dict>
</dict>
</dict>https://stackoverflow.com/questions/45946810
复制相似问题