WebViewで非SSLアセットを含むSSLURLを表示する試みをどのように検出しますか?ブラウザが混合SSL警告を出すのと同じように。
UIWebViewまたはUIWebViewDelegateに明らかなプロパティが表示されません。NSURLProtocolをサブクラス化して、SSL以外の接続をUIWebViewに通信することができます。これを行う簡単な方法はありますか?
WebViewで非SSLアセットを含むSSLURLを表示する試みをどのように検出しますか?ブラウザが混合SSL警告を出すのと同じように。
UIWebViewまたはUIWebViewDelegateに明らかなプロパティが表示されません。NSURLProtocolをサブクラス化して、SSL以外の接続をUIWebViewに通信することができます。これを行う簡単な方法はありますか?
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];