Я хочу добавить пользовательские заголовки в NSURLRequests
, созданный для фреймов верхнего уровня WKWebView
и всех его фреймов.
Чтобы добиться этого, я слушаю метод
- webView:decidePolicyForNavigationAction:decisionHandler:
. В этом методе я хочу отменить существующую загрузку страницы и создать новую NSURLRequest
и перезагрузить страницу.
Вот фрагмент кода, который я использую,
- (void)webView:(WKWebView*)webView
decidePolicyForNavigationAction:(WKNavigationAction*)action
decisionHandler:
(void (^)(WKNavigationActionPolicy))decisionHandler {
NSString* header = @"Custom-Header";
if([action.request.allHTTPHeaderFields objectForKey:header] ){
NSLog(@"Header already added for URL - %@",action.request.URL.absoluteString );
}
else{
decisionHandler(WKNavigationActionPolicyCancel);
NSLog(@"Adding header for URL %@",action.request.URL.absoluteString);
NSMutableURLRequest *mutableRequest = [action.request mutableCopy];
NSString* headerVal;
if(action.targetFrame.mainFrame)
{
headerVal = @"MAINFRAME";
}
else
{
headerVal = @"SUBFRAME";
}
[mutableRequest addValue:headerVal forHTTPHeaderField:header];
[action.targetFrame.webView loadRequest:mutableRequest];
return;
}
// further processing
}
Однако при таком подходе я сталкиваюсь со следующей проблемой: если обратный вызов получен для iFrame, вся страница перезагружается с URL-адресом iFrame,Вместо этого я хочу перезагрузить только iFrame с URL. Есть ли способ решить эту проблему?
Обратите внимание , что в конце этого я хочу иметь возможность отправлять пользовательский заголовок, указывающий, был ли запрос получен из основного кадра или из iFrame. Пожалуйста, предложите, если есть лучшие решения для достижения этой цели.