我有一个UIWebView和一个自定义的NSURLProtocol类,用于代理HTTP请求.我在加载github.com时遇到问题.如果我浏览到https://github.com然后它加载页面及其内容就好了.但是,如果我浏览到http://github.com,它会正确加载HTML,但不会加载图像或CSS.这是我加载https版本时的样子:

这是我加载http版本时的样子:

这是我用来重现此问题的视图控制器的代码:
@interface ViewController ()
{
UIWebView *aWebView;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
[NSURLProtocol registerClass:[WebViewProxyURLProtocol class]];
aWebView = [[UIWebView alloc] initWithFrame:self.view.frame];
aWebView.delegate = self;
[self.view addSubview:aWebView];
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://github.com"]];
[aWebView loadRequest:request];
}
@end
Run Code Online (Sandbox Code Playgroud)
这是NSURLProtocol实现:
@interface WebViewProxyURLProtocol : NSURLProtocol <NSURLConnectionDataDelegate>
@end
@implementation WebViewProxyURLProtocol {
NSMutableURLRequest* correctedRequest;
}
+ (BOOL)canInitWithRequest:(NSURLRequest *)request {
return ([[request allHTTPHeaderFields] objectForKey:@"X-WebViewProxy"] == nil);
}
+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request {
return request;
}
+ (BOOL)requestIsCacheEquivalent:(NSURLRequest *)a …Run Code Online (Sandbox Code Playgroud)