我正在开发一个Web视图,它只需要我信任的服务器(基于SSL握手),而不是所有Apple认可的服务器。
有没有办法拦截UIWebView连接,以便我可以控制请求身份验证?
当我使用UIWebView方法loadRequest时:无法获得SSL质询(因为它不是UIWebViewDelegate协议的一部分)。
另一种方法是获取UIWebView即将发送的请求(使用委托回调webView:shouldStartLoadWithRequest:navigationType :),告诉UIWebView不加载它,并使用NSURLConnection发送请求(使用其委托方法SSL握手逻辑)。当连接完成时,将它接收的数据加载到UIWebView中(使用加载方法loadData:MIMEType:textEncodingName:baseURL :)。此解决方法适用于简单的站点,但复杂的站点(JS,CSS ...)可能无法正常工作。
谢谢!
答案 0 :(得分:0)
我遇到类似的问题,即尝试显示证书已过期的网页。我发现this post向我展示了如何在NSURLRequest
上使用协议来覆盖方法allowsAnyHTTPSCertificateForHost
。
他强调苹果可能会接受或不会接受这一点 - 但是对于我的开发,这节省了我一些时间。
您可以将此技术用于您的解决方案。