虽然使用NSHTTPCookieStorage.sharedHTTPCookieStorage()
从UIWebView
获得cookies似乎很简单,但WKWebView
似乎将cookies存储在其他地方.
我做了一些调查,我从NSHTTPURLResponse
个物体上抓取了一些cookies .但是,这并不包含WKWebView
使用的所有cookie:
func webView(webView: WKWebView, decidePolicyForNavigationResponse navigationResponse: WKNavigationResponse, decisionHandler: (WKNavigationResponsePolicy) -> Void) {
if let httpResponse = navigationResponse.response as? NSHTTPURLResponse {
if let headers = httpResponse.allHeaderFields as? [String: String], url = httpResponse.URL {
let cookies = NSHTTPCookie.cookiesWithResponseHeaderFields(headers, forURL: url)
for cookie in cookies {
logDebug(cookie.description)
logDebug("found cookie " + cookie.name + " " + cookie.value)
}
}
}
}
奇怪的是,ios 9中还有一个类WKWebsiteDataStore
负责管理WKWebView
中的Cookie,但该类不包含检索Cookie数据的公共方法:
let storage = WKWebsiteDataStore.defaultDataStore()
storage.fetchDataRecordsOfTypes([WKWebsiteDataTypeCookies], completionHandler: { (records) -> Void in
for record in records {
logDebug("cookie record is " + record.debugDescription)
for dataType in record.dataTypes {
logDebug("data type is " + dataType.debugDescription)
// get cookie data??
}
}
})
是否有用于获取Cookie数据的解决方法?