我正在尝试用 WkWebView 替换我正在工作的 UIWebView 项目。我看过很多帖子,但我没有得到任何从 WKWebView 获取所有 cookie 的好的解决方案。我也试过这个evaluateJavaScript:@"document.cookie;"
,但它给了我这个()
。我还检查了这篇文章,并按照我的理解尝试了这个解决方案,但它也没有用。
guard let cookies = NSHTTPCookieStorage.sharedHTTPCookieStorage().cookies else {
return
}
上述方法仅适用于 UIWebView,因为 WKWebView 不会立即写回 cookie。谁能告诉我如何从 WKWebView 获取所有 cookie。谢谢
此方法有效,但没有给我所有的 cookie。
func webView(_ webView: WKWebView, decidePolicyFor navigationResponse: WKNavigationResponse, decisionHandler: @escaping (WKNavigationResponsePolicy) -> Void) {
if navigationResponse.response.url?.absoluteString.range(of: "") != nil || navigationResponse.response.url?.absoluteString.range(of: "") != nil{
let response = navigationResponse.response as? HTTPURLResponse
let cookies = HTTPCookie.cookies(withResponseHeaderFields: response?.allHeaderFields as! [String : String], for: (response?.url)!)
var array = [[HTTPCookiePropertyKey : Any]]()
for cookie in cookies {
if let properties = cookie.properties {
print("cookies save")
array.append(properties)
}
}
sCookies.append(array)
accountsUserDefaults.set(sCookies, forKey: "sCookies")
UserDefaults.standard.synchronize()
}
decisionHandler(WKNavigationResponsePolicy.allow)
}