didFailProvisionalLoadForFrame 对于某些 URL 但在 Safari 中工作正常

Bra*_*ean 5 xcode xamarin.ios ios xamarin wkwebview

我遇到一个奇怪的问题,即某个域无法加载到 WKWebView 中。它给出了一个错误:

WebPageProxy::didFailProvisionalLoadForFrame: frameID=3, domain=NSURLErrorDomain, code=-1200

我认为这是在抱怨证书问题?如果我通过 info.plist 允许不安全的内容,它就可以正常工作,但我当然不想允许这样做。

该证书适合该域。不幸的是,我无法分享该网址。这是一个 .gov 域。该证书是 DigiCert 并且未过期。

它在应用程序之外的 Safari 中运行良好,甚至在 Firefox 和 Chrome 中也运行良好,我认为它们使用了 WKWebView,但也许不是?

有没有人遇到过这个问题?我可以采取哪些额外步骤来确定 WKWebView 到底在抱怨什么以及可以采取哪些措施来解决它?

我们实际上使用的是 Xamarin,但我们在 Xamarin 和 Xcode 中都有测试项目来复制该问题。

谢谢!

Bra*_*ean 7

我发现问题了!

WKWebView(与 Safari 不同)要求 SSL 证书支持前向保密。

https://developer.apple.com/documentation/bundleresources/information_property_list/nsexceptionrequiresforwardsecrecy

您可以在此处检查证书是否支持此操作:

https://www.ssllabs.com/ssltest/analyze.html

可以在 info.plist 中禁用它,但我们选择要求网站所有者更改他们的证书。