在我的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由于访问控制检查而无法加载
我该如何克服?