如何从WKWebView获取Cookies?

7

如何从WKWebView实例中获取所有 cookie?

以下是我尝试过的方法:

1个回答

4

由于这个问题已经一个年没有得到答案,我来发布一下我的不太完美但是可行的解决方案:

你可以在WKNavigationDelegate中的-webView:decidePolicyForNavigationResponse:decisionHandler:方法中访问NSHTTPURLResponse对象。你可以稍后手动从HTTP头部提取cookies:

- (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);
}

如果您有更好的解决方案,请发表您的想法。

1
但我发现有些URL不会调用这个回调函数。例如,在进行POST请求时。 - brain
很多URL没有调用这个回调函数,例如提交表单的POST请求。 - ShivaPrasad
不错!为了保持一致性,"newCookies" 应该改成 "cookies"。 - Hans Knöchel
1
在我的情况下,每次我都会得到一个空的“cookies”数组。 - Yogendra Patel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接