gpt4 book ai didi

ios - 如何从 WKHttpCookieStore 中删除 cookie?

转载 作者:可可西里 更新时间:2023-11-01 05:42:56 24 4
gpt4 key购买 nike

iOS 11 为 WKWebView 带来了一些更新,包括 cookies 管理。我已经开始从 UIWebView 迁移我的应用程序并遇到了一个问题:即使 WKHttpCookieStore 提供了一种删除 cookie 的方法(deleteCookie:completionHandler:,Xamarin 包装器:DeleteCookieAsync),事实上 它不会删除所有 cookie。这是我的代码:

WKHttpCookieStore cookieStore = WKWebsiteDataStore.DefaultDataStore.HttpCookieStore;

// Delete all cookies
NSHttpCookie[] allCookies = await cookieStore.GetAllCookiesAsync();
foreach (NSHttpCookie cookieToDelete in allCookies)
{
await cookieStore.DeleteCookieAsync(cookieToDelete);
}

NSHttpCookie[] newCookies = await cookieStore.GetAllCookiesAsync();
// why newCookies is not an empty array?

myWkWebView.LoadRequest(new NSUrlRequest(new NSUrl("https://facebook.com/")));

例如,这个 cookie 正在被删除:

NSHTTPCookie    
version:1
name:c_user
value:100015842...
expiresDate:'2017-12-27 07:37:39 +0000'
created:'2017-09-28 07:39:01 +0000'
sessionOnly:FALSE
domain:.facebook.com
partition:none
path:/
isSecure:TRUE
path:"/"
isSecure:TRUE

但这一个不是:

NSHTTPCookie    
version:1
name:sb
value:bKbMW......OJ1V
expiresDate:'2019-09-28 07:37:39 +0000'
created:'2017-09-28 07:39:15 +0000'
sessionOnly:FALSE
domain:.facebook.com
partition:none
path:/
isSecure:TRUE
path:"/"
isSecure:TRUE

原生 Swift 应用程序也有同样的问题。我很困惑,因为类似的代码适用于 NSHttpCookieStorage + UIWebView

这是预期的行为吗?如果是这样,为什么?有没有办法清除 WKHttpCookieStore 中的 cookie?

最佳答案

如果您想删除所有 cookie,那么在 WKWebsiteDataStore 上执行此操作会更容易。在 Objective-C 中:

NSSet *websiteDataTypes = [NSSet setWithArray:@[WKWebsiteDataTypeCookies]];
NSDate *dateFrom = [NSDate dateWithTimeIntervalSince1970:0];
[[WKWebsiteDataStore defaultDataStore] removeDataOfTypes:websiteDataTypes
modifiedSince:dateFrom
completionHandler:nil];

请注意,这适用于 iOS 9 及更高版本。

关于ios - 如何从 WKHttpCookieStore 中删除 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46465070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com