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

Posted

技术标签:

【中文标题】如何在 iOS 中清除特定域的 cookie?【英文标题】:How to clear cookies for specific domain in iOS? 【发布时间】:2012-10-23 08:35:41 【问题描述】:

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

【问题讨论】:

这个问题可以帮到你***.com/questions/8154428/… 我找到了解决方案。我想帮助其他有同样问题的人。没有与我的问题相关的完美答案。 【参考方案1】:

我自己找到了解决方案。 如果您希望删除 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 的站点。您必须知道每个域都有子域。如果您在那个地方提供全局域名,它不会删除子域的 cookie。 例如 LinkedIn,它有许多子域,如 in.linkedIn.com、api.linkedIn.com 等。如果我给 http://www.linkedin.com 这是全球域名,它不会删除子域的 cookie。

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

没有人可以帮助我,我希望至少我的帖子能在未来帮助到某人。

【讨论】:

以上是关于如何在 iOS 中清除特定域的 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Chrome google浏览器中清除和管理Cookie

如何实现网页代码清除所有cookies

Chrome浏览器中清除特定网站的Cookie数据

如何在 Sencha Touch 2.0 中清除 cookie

如何在 Django 中清除旧 SESSION_COOKIE_DOMAIN 的 cookie

如何在节点 js 中清除浏览器 cookie 时清除 req.session?