如何在iOS中清除特定域的cookie?

时间:2012-10-23 08:35:42

标签: ios cookies uiwebview nsstring subdomain

我已经在StackOverflow上搜索了几乎所有问题来回答我的问题。我没有找到任何有用的链接或教程说明哪种方式最好清除特定域的cookie。 如果有人可以帮助我,那就请。

1 个答案:

答案 0 :(得分:8)

我自己找到了解决方案。 如果您希望删除UIWebView中的整个cookie,请执行此操作。

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSHTTPCookie *cookie;
for (cookie in [storage cookies]) {
  NSLog(@"%@", cookie); // Print the deleted cookie.
  [storage deleteCookie:cookie];
}
[[NSUserDefaults standardUserDefaults] synchronize];

如果您希望删除特定于某个网站或域的Cookie,请执行此操作。

NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
NSHTTPCookie *cookie;
for(cookie in [storage cookies]) {
   if([[cookie domain] rangeOfString:@"siteName(or)domainName"].location != NSNotFound) {
     NSLog(@"cookie to be deleted:%@", cookie);
     [storage deleteCookie:cookie];
   }
 }

在上面的代码中,我使用了siteName(或)DomainName将其替换为您要删除cookie的网站。您必须知道每个域都有子域。如果您在该地方提供gobal域名,则不会删除子域名的cookie。 例如LinkedIn,它有许多子域,如in.linkedIn.com,api.linkedIn.com等。如果我给http://www.linkedin.com这是全球域名,它就不会删除子域名的cookie。

NSHTTPCookie具有域属性,因此使用它来获取所有域名并使用rangeOfString:NSString的方法获取具有String的域(例如linkedin)。删除它将删除其所有域的cookie。

我没有人帮助我希望至少我的帖子将来会帮助某人。