使用來(lái)獲取Cookie UIWebView似乎很簡(jiǎn)單NSHTTPCookieStorage.sharedHTTPCookieStorage(),它似乎WKWebView將Cookie存儲(chǔ)在其他位置。我做了一些研究,然后從NSHTTPURLResponse對(duì)象中獲取了一些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中還有一個(gè)類負(fù)責(zé)管理中的cookie WKWebView,但是,該類不包含檢索cookie數(shù)據(jù)的公共方法: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?? } }})是否有解決方法來(lái)獲取Cookie數(shù)據(jù)?
3 回答

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