UIWebView中的Cookies

9

我有一个UIWebView,不想让它存储任何cookie,所以在webview加载之前,我执行以下操作:

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

检查cookie计数为0,因此它们都被删除。但是当我访问stackoverflow时,它仍然识别我的Google帐户并登录。这是怎么发生的?我以为它与cookie有关?

3个回答

7
我曾经遇到过同样的问题,找到了两种解决方法。 我首先注意到cookie有时会在奇怪的时间设置(特别是在ios 4.0上表现异常)。
  • 在webview上用户使用后立即删除cookie通常无法得到预期结果。

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

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

希望我能帮到您。


6

尝试更改cookie接受政策:

[NSHTTPCookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyNever];

问题在于这会阻止cookie的创建,我想删除现有的cookie。最好清除所有缓存、cookie、本地存储和其他用户数据。 - Jonathan.
嗨,乔纳森,根据你的问题,我不知道你想要执行什么其他操作。看起来你正在寻找完全清除缓存 - 不确定这是否可能。你到底想做什么?为什么需要清除所有缓存、cookie 和本地存储/用户数据? - defbyte

0

使用以下代码即可正常运行。

   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];否则你会感到困惑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接