【发布时间】:2011-12-09 23:45:40
【问题描述】:
如何在 UIWebView (iOS) 上加载网页(使用自签名证书的 Https)?我尝试使用 NSURLConnection 并且能够将 NSMutableData 加载到 UIwebView。但在这种情况下,我无法看到该页面中的图像。
【问题讨论】:
标签: iphone objective-c ios
如何在 UIWebView (iOS) 上加载网页(使用自签名证书的 Https)?我尝试使用 NSURLConnection 并且能够将 NSMutableData 加载到 UIwebView。但在这种情况下,我无法看到该页面中的图像。
【问题讨论】:
标签: iphone objective-c ios
自签名证书大部分时间无法被客户端验证,这就是客户端无法加载数据的原因,因为它无法从服务器验证。
证书使用域来验证自身,因此在开发环境中使用起来有点困难。
有一个为本地环境证书创建的工具,我不确定它是如何在内部工作的,我最好的想法是它在您的环境中添加了另一个 CA 文件。
您可能想检查mkcert 这是非常容易使用的好方法。
【讨论】:
[yourWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"yourUrlGoesHere"]]];
关于证书部分,如果您的 URL 可在 Safari 中打开,它将在 web 视图中打开。
评论更新
试试下面的
NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString:@"yourUrlGoesHere"]];
NSURLConnection *urlConnection=[NSURLConnection connectionWithRequest:req delegate:self];
[yourWebView loadRequest:req];
并在您的类中实现以下委托方法,
#pragma mark - NSURLConnection Delegate Methods
- (BOOL)connection:(NSURLConnection *)connection canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace {
return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust];
}
- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
[challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge];
}
【讨论】: