亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從WKWebView獲取所有cookie

從WKWebView獲取所有cookie

慕斯王 2019-12-17 15:25:37
使用來獲取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,但是我可以肯定,這是目前最可靠的解決方法。


查看完整回答
反對 回復 2019-12-17
  • 3 回答
  • 0 關注
  • 1930 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號