带有服务器信任身份验证挑战的UIWebView

问题描述:

我正在研究需要仅使用我信任的服务器(基于SSL握手)而不是所有Apple认可的服务器的Web视图。带有服务器信任身份验证挑战的UIWebView

有没有办法拦截UIWebView连接,所以我可以控制请求身份验证?

当我使用UIWebView方法loadRequest:没有办法获取SSL挑战(因为它不是UIWebViewDelegate协议的一部分)。

另一种方法是获取UIWebView即将发送的请求(使用委托回调webView:shouldStartLoadWithRequest:navigationType :),告诉UIWebView不要加载它,并使用NSURLConnection发送请求(使用委托方法对于SSL握手逻辑)。并在连接完成时,将接收到的数据加载到UIWebView中(使用加载方法loadData:MIMEType:textEncodingName:baseURL :)。此解决方法适用于简单的网站,但复杂的网站(JS,CSS ...)可能无法正常工作。

谢谢!

我有一个类似的问题,试图显示证书已过期的网页。我发现this post,它向我展示了如何使用NSURLRequest上的协议来覆盖方法allowsAnyHTTPSCertificateForHost

他强调,这可能会或可能不会被苹果公司接受 - 但是对于我的发展,这节省了我一些时间。

您可以使用这种技术来解决您的问题。

+0

我还发现堆栈溢出一个相关的问题 - http://*.com/questions/1769888/how-to-display-the-authentication-challenge-in-uiwebview - 的解决方案之一提供了一个“专业“但是这个和许多相关问题的免费解决方案。我还没有测试过他的代码。 – 2011-01-26 12:38:20