如何从WKWebView实例获取所有 cookie?
以下是我迄今为止所做的尝试:
我尝试使用- [WKWebView evaluateJavaScript:completionHandler:]
来评估document.cookie
- 遗憾的是,结果中不包含标记为HttpOnly的Cookie。
根据Introducing the Modern WebKit API (WWDC 2014 Session 206),应该可以从response
的实例中获取WKNavigation
个对象。但是,根据class reference,WKNavigation
不包含任何公共方法/属性。
答案 0 :(得分:4)
由于这个问题在一年后没有得到解答,我发布了我的不完善但有效的解决方案:
您可以NSHTTPURLResponse
上定义的- webView:decidePolicyForNavigationResponse:decisionHandler:
方法访问WKNavigationDelegate
个对象。您可以稍后从HTTP标头中手动提取Cookie:
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {
NSHTTPURLResponse* response = navigationResponse.response;
NSArray *cookies = [NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:[NSURL URLWithString:@""]];
for (NSHTTPCookie *cookie in cookies) {
// Do something with the cookie
}
decisionHandler(WKNavigationResponsePolicyAllow);
}
如果你有更好的解决方案,请发布你的解决方案。