Während das Abrufen von Cookies UIWebView
durch die Verwendung unkompliziert NSHTTPCookieStorage.sharedHTTPCookieStorage()
erscheint, WKWebView
werden die Cookies anscheinend an einem anderen Ort gespeichert.
Ich habe einige Nachforschungen angestellt und konnte einige Kekse erhalten, indem ich sie vom NSHTTPURLResponse
Objekt genommen habe. Dies enthält jedoch nicht alle Cookies, die verwendet werden von 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)
}
}
}
}
Seltsamerweise gibt es WKWebsiteDataStore
in ios 9 auch eine Klasse , die für die Verwaltung von Cookies verantwortlich WKWebView
ist. Die Klasse enthält jedoch keine öffentliche Methode zum Abrufen der Cookie-Daten:
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??
}
}
})
Gibt es eine Problemumgehung zum Abrufen der Cookie-Daten?