小编run*_*sun的帖子

使用自定义NSURLProtocol时,UIWebView无法加载重定向页面的内容

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

HTTPS GitHub

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

HTTP GitHub

这是我用来重现此问题的视图控制器的代码:

@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)

objective-c uiwebview nsurlprotocol

3
推荐指数
1
解决办法
3699
查看次数

标签 统计

nsurlprotocol ×1

objective-c ×1

uiwebview ×1