从WKWebView获取所有cookie [英] Getting all cookies from WKWebView
问题描述
从 UIWebView
获取Cookie似乎很简单,使用 NSHTTPCookieStorage.sharedHTTPCookieStorage()
,似乎 WKWebView
将cookie存储在其他地方。
while getting cookies from UIWebView
seems straightforward by using NSHTTPCookieStorage.sharedHTTPCookieStorage()
, it seems WKWebView
stores the cookies somewhere else.
我做了一些研究,我能够从中获取一些饼干 NSHTTPURLResponse
对象。但是,这不包含 WKWebView
使用的所有cookie:
I did some research, and I was able to get some cookies from the grabbing it from NSHTTPURLResponse
object. this, however, does not contain all the cookies used by WKWebView
:
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数据的公共方法:
Strangely, there's also a class WKWebsiteDataStore
in ios 9 that responsible for managing cookies in WKWebView
, however, the class does not contain a public method to retrieve the cookies data:
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数据?
Is there a workaround for getting the cookie data?
推荐答案
最后, httpCookieStore
for WKWebsiteDataStore
登陆iOS 11。
Finally, httpCookieStore
for WKWebsiteDataStore
landed in iOS 11.
https://developer.apple.com/documentation/webkit/wkwebsitedatastore?changes=latest_minor
这篇关于从WKWebView获取所有cookie的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!