我尝试了以下方法从 WKWebView
iOS 10 及更低版本中获取 cookie,但无法获取 cookie:
1:从 HTTPCookieStorage 获取 cookie。
2:加载完成后从 WKNavigationResponse 模型中获取 cookie。
3:通过使用 WKUserScript 添加 cookie 更改的观察者来从 WKUserContentController 获取。
我尝试了以下方法从 WKWebView
iOS 10 及更低版本中获取 cookie,但无法获取 cookie:
1:从 HTTPCookieStorage 获取 cookie。
2:加载完成后从 WKNavigationResponse 模型中获取 cookie。
3:通过使用 WKUserScript 添加 cookie 更改的观察者来从 WKUserContentController 获取。
尝试这个
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
}];
});
}
您可以在此线程中尝试代码并按照十一月雨的答案。这个对我有用。 从 WKWebView 获取所有 cookie