使用來獲取Cookie UIWebView似乎很簡單NSHTTPCookieStorage.sharedHTTPCookieStorage(),它似乎WKWebView將Cookie存儲在其他位置。我做了一些研究,然后從NSHTTPURLResponse對象中獲取了一些Cookie 。但是,其中不包含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) } } }}奇怪的是WKWebsiteDataStore,ios 9中還有一個類負責管理中的cookie WKWebView,但是,該類不包含檢索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數據?
3 回答

慕村225694
TA貢獻1880條經驗 獲得超4個贊
所使用(創建)的Cookie WKWebView實際上已正確存儲在中NSHTTPCookieStorage.sharedHTTPCookieStorage()。
問題在于WKWebView不會立即寫回cookie。我認為它按自己的時間表進行。例如,當a WKWebView關閉或定期關閉時。
因此,最終它們確實會出現在那兒,但是何時是不可預測的。
您可以NSHTTPCookieStorage通過關閉來強制“同步”到共享WKWebView。請讓我們知道是否可行。
更新:我只記得在iOS的Firefox中,我們WKWebView通過用WKProcessPool新的替換它來強制刷新其內部數據(包括cookie)。沒有官方的API,但是我可以肯定,這是目前最可靠的解決方法。
- 3 回答
- 0 關注
- 1930 瀏覽
添加回答
舉報
0/150
提交
取消