UIWebView 中的 Cookie

Posted

技术标签:

【中文标题】UIWebView 中的 Cookie【英文标题】:Cookies in UIWebView 【发布时间】:2010-09-05 16:50:42 【问题描述】:

我有一个 UIWebView,我不希望它存储 cookie,所以在加载 webview 之前我会这样做:

NSArray* cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies];
for (NSHTTPCookie *cookie in cookies) 
    [[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];

检查 cookie 的计数为 0,因此它们都被删除。但是当我去 *** 时,它仍然可以识别我的 Google 帐户并让我登录。这是怎么发生的?我认为它与 cookie 一起使用?

【问题讨论】:

【参考方案1】:

我不得不处理完全相同的问题,我找到了两种方法来处理这个问题。 我首先注意到 cookie 会(有时)在奇怪的时间设置(奇怪的行为,尤其是 ios 4.0)。

在用户浏览网页后立即删除 Cookie 通常无法获得预期的结果。

然后我集成了一个持久的手动标志,该标志在“注销”(也就是清除所有 cookie/删除其他用户数据)操作时设置为 True。 在下一次登录(也就是基于用户登录的操作)时,我再次清除了 cookie(与您在代码发布中所做的相同)。

后来我发现,听NSHTTPCookieManagerCookiesChangedNotification 然后删除 cookie 也很有效。

希望我能帮上忙。

【讨论】:

【参考方案2】:

尝试更改 cookie 接受政策:

[NSHTTPCookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];

【讨论】:

问题是这会阻止 cookie 被制作我想删除现有的。理想情况下清除所有缓存、cookie、本地存储和其他用户数据。 您好乔纳森,根据您的问题,我不知道您要执行哪些其他操作。看起来您正在寻找完整的缓存清除 - 不确定这是否可能。你到底想做什么?为什么需要擦除所有缓存、cookie 和本地存储/用户数据?【参考方案3】:

使用以下,它会工作..

   NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
   NSHTTPCookie *cookie;
   for(cookie in [storage cookies])
    
      NSLog(@"cookie to be deleted:%@", cookie);
      [storage deleteCookie:cookie];
    
   [[NSUserDefaults standardUserDefaults] synchronize];

这里不要错过最后一行 [[NSUserDefaults standardUserDefaults] synchronize];否则你会一直困惑。

【讨论】:

以上是关于UIWebView 中的 Cookie的主要内容,如果未能解决你的问题,请参考以下文章

mailto:UIWebView 中的链接 - 不起作用

嵌入在 UIWebView 中的 MPMoviePlayerController 中的视频流

UIWebView 中的 Cookie

UIWebView ios8中的透明背景

禁用UIWebView中的链接?

@interface 中的 UIWebView 委托设置