在WKWebview中修改请求标头

时间:2019-01-17 17:06:08

标签: ios objective-c wkwebview access-control

在我的IOS应用中,我有一个要求,其中对服务器的每个请求都应包含特定的HTTP标头。它不仅在第一个请求上,而且在所有后续请求中都应包含标头。

为此,我使用委托来拦截请求,

-(void) webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{

if(([navigationAction.request.URL.host rangeOfString:kUSiteRegx options:NSRegularExpressionSearch].location != NSNotFound) &&
                            [navigationAction.request valueForHTTPHeaderField:kHttpRequestHeader] == nil){
        decisionHandler(WKNavigationActionPolicyCancel);
        [webView loadCustomRequest:navigationAction.request];
        return;
    }
}

在这里,我取消了原始请求,并发出了一个新请求,将标头附加到原始标头,如下所示。

-(WKNavigation*)loadCustomRequest:(NSURLRequest*)request{
    NSMutableURLRequest *req = [request mutableCopy];
    NSString *version = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
    NSString *versionString = [kHttpRequestPrefix stringByAppendingString:version];
    [req setValue:versionString forHTTPHeaderField:kHttpRequestHeader];
    return [self loadRequest:req];
}

现在,这可以防止我的请求中断,并且它报告的错误是

  

xmlhttprequest由于访问控制检查而无法加载

我该如何克服?

0 个答案:

没有答案