如何从iOS wkwebview中的urlrequest获取cookie

时间:2017-10-26 13:57:22

标签: ios cookies request

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
    var req = navigationAction.request;
    let cookie = req.value(forHTTPHeaderField: "Cookie");
    print(cookie) // always nil

    decisionHandler(.allow);
}

我想在用户登录后获得会话,但cookie总是为零;我怎么能得到它?

2 个答案:

答案 0 :(得分:1)

Cookie通常存储在浏览器中的变量document.cookie中。 您可以通过执行Javascript代码来访问它。在这种情况下,只需"document.cookie"即可返回cookie。

   let cookieScript = "document.cookie;"
   webView.evaluateJavaScript(cookieScript) { (response, error) in
            if let response = response {
                    print(response as! String)
                }
   }

答案 1 :(得分:0)

为什么不使用自iOS 11以来出现的WKWebView API

webView.configuration.websiteDataStore.httpCookieStore.getAllCookies() { cookies in
    // do what you need with cookies
}

一个优点是此方法也可以跟踪HttpOnly cookie。