如何从WKWebView获取cookie

时间:2017-01-05 09:15:07

标签: ios cookies wkwebview

我有这个加载登录页面的WKWebView,我需要的是成功登录(表单提交)后设置的“ iPlanetDirectoryPro ”cookie(见下图)。所以,我试图存储它以便在另一个WKWebView中使用它。有趣的是“sharedHTTPCookieStorage”包含其他cookie但不包含“ iPlanetDirectoryPro ”。

enter image description here

到目前为止我尝试了什么:

  1. 创建了一个共享进程池,并为第一个WKWebView使用了相同的配置,并且我正在尝试使用“ iPlanetDirectoryPro ”。
  2. 我使用此委托方法 decisionPolicyForNavigationResponse 来抓取Cookie:

    - (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{
    NSHTTPURLResponse *response = (NSHTTPURLResponse *)navigationResponse.response;
    NSArray *cookies =[NSHTTPCookie cookiesWithResponseHeaderFields:[response allHeaderFields] forURL:response.URL];
    
    for (NSHTTPCookie *cookie in cookies) {
        [[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie];
    }
    
    decisionHandler(WKNavigationResponsePolicyAllow);
    }
    
  3. 在webView上评估JavaScript命令document.cookie。

  4. 有什么想法吗?

1 个答案:

答案 0 :(得分:-2)

无论出于何种原因,WKWebView和HTTPCookieStorage都没有完美地协同工作。您需要自己管理Cookie,例如,您可以查看here