Мое требование - обновить файлы cookie, которые установлены на WKWebView
. Я могу обновить печенье в NSHTTPCookieStorage
, но одни и те же куки не отражаются на WKWebView
печенья (Значения обновлений присутствуют в NSHTTPCookieStorage
, но не установлены в WKWebView
)Обновить значения Cookie WKWebView
Ниже код, который я использовал для установки что куки-файлы для AJAX-вызовов.
NSString *strURL = DASHBOARDURL;
NSURL *url = [NSURL URLWithString:strURL];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:url];
NSMutableString *script = [[NSMutableString alloc] init];
NSMutableString *cookieString = [[NSMutableString alloc] init];
for (NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
[cookieString appendString:[NSString stringWithFormat:@"%@;", cookie.getCookieString]];
[script appendString:[NSString stringWithFormat:@"document.cookie='%@';",cookie.getCookieString]];
}
[request setValue:cookieString forHTTPHeaderField:@"Cookie"];
//cookies for further AJAX calls
WKUserContentController *userContentController = [[WKUserContentController alloc] init];
WKUserScript *cookieInScript = [[WKUserScript alloc] initWithSource:script
injectionTime:WKUserScriptInjectionTimeAtDocumentStart
forMainFrameOnly:NO];
[userContentController removeAllUserScripts];
[userContentController addUserScript:cookieInScript];
WKWebViewConfiguration *webViewConfig = [[WKWebViewConfiguration alloc] init];
webViewConfig.userContentController = userContentController;
CGRect viewRect = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height);
wkWebView = [[WKWebView alloc] initWithFrame:viewRect configuration:webViewConfig];
wkWebView.navigationDelegate = self;
[wkWebView loadRequest:request];
[self.view addSubview:wkWebView];
После обновления куки, я пытался напечатать существующие куки в моем NSHTTPCookieStorage, который показывает обновленные значения.
NSLog(@"cookies:%@",[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]);
Я также попытался напечатать скрипт в WKNavigationDelegate
после обновления куки, но это показывает старые значения.
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
NSLog(@"Script: %@",[wkWebView.configuration.userContentController.userScripts firstObject].source);
}