虽然使用NSHTTPCookieStorage.sharedHTTPCookieStorage()UIWebView获得cookies似乎很简单,但WKWebView似乎将cookies存储在其他地方.

我做了一些调查,我从NSHTTPURLResponse个物体上抓取了一些cookies .但是,这并不包含WKWebView使用的所有cookie:

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数据的公共方法:

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数据的解决方法?

推荐答案

最终,WKWebsiteDataStore人中的httpCookieStore人登陆了iOS 11.

https://developer.apple.com/documentation/webkit/wkwebsitedatastore?changes=latest_minor

Ios相关问答推荐

为什么导航栏在与Style.Page的选项卡栏一起使用时停止工作?

SWIFT-仅解码感兴趣的元素

如何在KMM项目中处理PHPickerViewController的回调?

在flatter_riverpod中,如果没有ref对象,我们如何访问提供程序?

使用 Xamarin 将 dext Bundle 到 iOS .ipa 中

NumberFormatter 无法使用 Xcode 15.0 beta 正确识别 iOS 17 beta 中的 Locale 货币设置

创建 Flutter 项目时,如何从我的系统中删除特定的开发者身份?

Apple Metal iOS 为什么 GLKMatrix4MakeLookAt 来回摇摆

不可发送类型 '[String : Any]?'在调用非隔离实例方法 XXX 时退出主参与者隔离上下文不能跨越参与者边界

Flutter iOS 构建失败:DVTCoreDeviceEnabledState_Disabled

SwiftUI 中的描边图像边框

在 SwiftUI 中重构提取到子视图的 GeometryReader 代码

Xcode intellisense 彩色框中字母的含义,如 f、T、C、M、P、C、K、# 等

如何更新推送通知服务证书

iOS - 确保在主线程上执行

try 在 iOS 中处理后退导航按钮操作

如何使用完成按钮制作 UIPickerView?

如果我的分发证书过期会怎样?

如何为 NSDate 添加一个月?

请在您的 Podfile 中为此目标指定一个平台?