В моем приложении для 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 не может загрузиться из-за проверок контроля доступа
Как я могу преодолеть это?