0

您将如何检测在 WebView 中显示包含非 SSL 资产的 SSL URL 的任何尝试?就像浏览器给你一个混合 SSL 警告一样。

我在UIWebViewUIWebViewDelegate上看不到任何明显的属性。我可以继承 NSURLProtocol,并以某种方式将非 SSL 连接传回 UIWebView。有没有更简单的方法来做到这一点?

4

1 回答 1

1

一种解决方案是创建您的自定义 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];
于 2013-03-19T18:35:23.497 回答