Meine Anforderung besteht darin, die Cookies zu aktualisieren, die auf WKWebView
gesetzt sind. Ich bin in der Lage, die Cookies in NSHTTPCookieStorage
zu aktualisieren, aber die gleichen Cookies nicht zu WKWebView
Cookies reflektiert (Die Aktualisierungswerte in NSHTTPCookieStorage
vorhanden sind, aber nicht auf WKWebView
)WKWebView-Cookie-Werte aktualisieren
Hier finden Sie Code, die ich verwendet haben, um eingestellt dass Cookies zu AJAX aufrufen.
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];
Nachdem die Cookies zu aktualisieren, habe ich versucht, die vorhandenen Cookies in meinem NSHTTPCookieStorage zu drucken, die die aktualisierten Werte zeigt.
NSLog(@"cookies:%@",[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]);
Ich habe auch versucht, in WKNavigationDelegate
das Skript aus Aufträgen, die Cookies zu aktualisieren, aber es zeigt die alten Werte.
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
NSLog(@"Script: %@",[wkWebView.configuration.userContentController.userScripts firstObject].source);
}