2

我尝试了以下方法从 WKWebViewiOS 10 及更低版本中获取 cookie,但无法获取 cookie:

1:从 HTTPCookieStorage 获取 cookie。
2:加载完成后从 WKNavigationResponse 模型中获取 cookie。
3:通过使用 WKUserScript 添加 cookie 更改的观察者来从 WKUserContentController 获取。

4

2 回答 2

0

尝试这个

WKWebsiteDataStore.default().httpCookieStore

https://developer.apple.com/documentation/webkit/wkwebsitedatastore

对于 Objective-C,您可以尝试:

- (void)clearCookies {
  NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
  for (NSHTTPCookie *c in cookieStorage.cookies) {
    [cookieStorage deleteCookie:c];
  }
}

- (void)clearWKData {
  NSSet *cachedData = [NSSet setWithArray:@[
    WKWebsiteDataTypeCookies,
    WKWebsiteDataTypeDiskCache,
    WKWebsiteDataTypeMemoryCache,
    WKWebsiteDataTypeLocalStorage,
    WKWebsiteDataTypeSessionStorage,
    WKWebsiteDataTypeWebSQLDatabases,
    WKWebsiteDataTypeIndexedDBDatabases,
    WKWebsiteDataTypeOfflineWebApplicationCache,
  ]];

  dispatch_async(dispatch_get_main_queue(), ^{
    NSDate *epoch = [NSDate dateWithTimeIntervalSince1970:0];
    [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:cachedData modifiedSince:epoch completionHandler:^{}];
    [[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:cachedData modifiedSince:epoch completionHandler:^{
      // Completion
    }];
  });
}
于 2019-03-14T02:25:08.233 回答
0

您可以在此线程中尝试代码并按照十一月雨的答案。这个对我有用。 从 WKWebView 获取所有 cookie

于 2019-03-14T04:55:10.387 回答