在做WKWebView 重定向的时候需要拦截WKWebView,使用了NSURLProtocol或者WKURLSchemeHandler俩种方案都试过了但是都不能好好解决,目前使用WKURLSchemeHandler方案,在拦截https://mail.qq.com的时候不能做到很好的拦截?提示报的是csp相关报错。求解?
Method originalMethod1 = class_getClassMethod(self, @selector(handlesURLScheme:));
Method swizzledMethod1 = class_getClassMethod(self, @selector(yyhandlesURLScheme:));
method_exchangeImplementations(originalMethod1, swizzledMethod1);
}); return NO; //这里让返回NO,应该是默认不走系统断言或者其他判断啥的
} else { return [self handlesURLScheme:urlScheme];
}#pragma mark - WKURLSchemeHandler
NSURLRequest *request = urlSchemeTask.request;
NSURLRequest *httpRequest = [self httpRequest:request];
NSString *mineType = [[self class] mimeTypeForData:httpRequest.HTTPBody];
[self.hashTable addObject:urlSchemeTask];
NSURLSessionDataTask *task = [self.session dataTaskWithRequest:httpRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (![self.hashTable containsObject:urlSchemeTask]) {
return ;
}
if (response) {
[urlSchemeTask didReceiveResponse:response];
}
if (data) {
[urlSchemeTask didReceiveData:data];
}
if (error) {
[urlSchemeTask didFailWithError:error];
} else {
[urlSchemeTask didFinish];
}
[self.hashTable removeObject:urlSchemeTask];
}];
[task resume];
}#pragma mark - WKURLSchemeHandler
NSURLRequest *request = urlSchemeTask.request;
NSURLRequest *httpRequest = [self httpRequest:request];
NSString *mineType = [[self class] mimeTypeForData:httpRequest.HTTPBody];
[self.hashTable addObject:urlSchemeTask];
NSURLSessionDataTask *task = [self.session dataTaskWithRequest:httpRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (![self.hashTable containsObject:urlSchemeTask]) {
return ;
}
if (response) {
[urlSchemeTask didReceiveResponse:response];
}
if (data) {
[urlSchemeTask didReceiveData:data];
}
if (error) {
[urlSchemeTask didFailWithError:error];
} else {
[urlSchemeTask didFinish];
}
[self.hashTable removeObject:urlSchemeTask];
}];
[task resume];
}现在我的WKURLSchemeHandler 拦截一般的链接并成功请求网页没有问题,但是在拦截网页包含csp策略的时候拦截失效了
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。