【问题标题】:Cookies in UIWebViewUIWebView 中的 Cookie
【发布时间】:2023-04-04 05:10:01
【问题描述】:

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

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

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

【问题讨论】:

    标签: cocoa-touch cookies uiwebview ios


    【解决方案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];否则你会一直困惑。

      【讨论】:

        猜你喜欢
        • 2012-04-05
        • 2011-11-25
        • 2012-05-23
        • 2013-01-05
        • 2015-05-01
        • 1970-01-01
        • 2014-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多