您将如何检测在 WebView 中显示包含非 SSL 资产的 SSL URL 的任何尝试?就像浏览器给你一个混合 SSL 警告一样。
我在UIWebView或UIWebViewDelegate上看不到任何明显的属性。我可以继承 NSURLProtocol,并以某种方式将非 SSL 连接传回 UIWebView。有没有更简单的方法来做到这一点?
您将如何检测在 WebView 中显示包含非 SSL 资产的 SSL URL 的任何尝试?就像浏览器给你一个混合 SSL 警告一样。
我在UIWebView或UIWebViewDelegate上看不到任何明显的属性。我可以继承 NSURLProtocol,并以某种方式将非 SSL 连接传回 UIWebView。有没有更简单的方法来做到这一点?
一种解决方案是创建您的自定义 URL 缓存并将其设为默认值,以便您可以捕获所有 HTTP 请求,然后您可以检查混合的 SSL 内容。
这是一个例子:
@interface MonitoringURLCache : NSURLCache
@end
@implementation MonitoringURLCache
- (NSCachedURLResponse*)cachedResponseForRequest:(NSURLRequest *)request {
NSURL *requestURL = [request URL];
NSURL *pageURL = [request mainDocumentURL];
if ([[pageURL scheme] isEqualToString:@"https"] && [[requestURL scheme] isEqualToString:@"http"]) {
NSLog(@"Non safe resource: %@ referenced from page: %@", requestURL, pageURL);
}
return [super cachedResponseForRequest:request];
}
@end
/// Register your custom cache
MonitoringURLCache *cache = [[MonitoringURLCache alloc] init];
[NSURLCache setSharedURLCache:cache];
/// Make a request to a website with mixed SSL content
NSURL *url = [NSURL URLWithString:@"https://some-website-with-mixed-ssl-content/"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webview loadRequest:request];