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总是为零;我怎么能得到它?
答案 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。