【问题标题】:Clear iPhone simulator cookies清除 iPhone 模拟器 cookie
【发布时间】:2010-12-13 08:57:36
【问题描述】:

我有一个应用程序向REST 服务发出请求。身份验证是使用 cookie 完成的。这已经奏效了。

我遇到的问题是测试 cookie 不再有效并且我的代码必须重新验证的情况。为了测试这一点,我必须等到 cookie 无效,这可能需要一些时间。为了加速这一点,我认为如果我删除 cookie 也会产生相同的效果。

如何在 iPhone 模拟器上删除应用的所有 cookie?

我已经尝试了以下方法:

删除 /Library/Cookies/Cookies.binarycookies 不起作用。似乎我的 cookie 从未写入此文件。

在应用启动时删除 NSHTTPCookieStorage 中的所有 cookie 也不起作用。

【问题讨论】:

  • 有什么原因重置模拟器对你不起作用?

标签: iphone nshttpcookie


【解决方案1】:

您可能会发现在 SDK 代码中执行此操作比修改文件系统更幸运。 试试:

    //Delete previous cookies
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:YOUR_URL] copy] autorelease]) {
        [cookieStorage deleteCookie:each];
    }

【讨论】:

  • 像魅力一样工作。你拯救了我的一天!
【解决方案2】:

cookies 位于:

/Users/<YourUsername>/Library/Application Support/iPhone Simulator/<iOSversion>/Library/Cookies/Cookies.binarycookies

您可能需要退出 Safari(在快速应用切换区域),然后删除它们,这样 Safari 就不会将它们留在内存中。

【讨论】:

  • 这似乎只适用于 4.x 之前的 SDK。我有那个文件,但是从春天开始就没有更新过。
  • 删除 Cookies/Cookies.binarycookies 绝对适合我,见上文。
  • 谢谢马修,你让我更进一步。您的目录仅适用于我自己的应用程序中的 Safari,这些目录是 .../4.2/Applications//Library/Cookies/。我删除了重置模拟器之前没有看到的 .dat 文件。之后,我的应用程序不再在应用程序启动之间保存 cookie。我需要测试的那种。但这绝对是一种奇怪的行为。
  • 啊,很有趣,也很奇怪。无论如何,很高兴你找到了解决方案。
  • @modiX 这个答案来自 2010 年。从那时起,很多 发生了变化。 重置模拟器可能是您最好的选择。如果您需要在保留其他内容的同时删除单个 cookie,您应该可以在 Library/Developer/CoreSimulator/Devices/DEVICEIDENTIFIERHERE/data/Library/Cookies 中找到它们。将“DEVICEIDENTIFIERHERE”替换为该设备的 37 个字符的 UUID 目录名称。如果您只需在 Finder 中按“修改日期”进行排序,您就能找到正确的。
【解决方案3】:

您可以重置模拟器

  • 启动模拟器。
  • 单击“菜单栏”上的第一项。上面写着“iOS 模拟器”
  • 将出现一个菜单。下三项到“重置内容和设置”
  • 在出现的对话框中点击“重置”

【讨论】:

  • 重置它确实可能是最简单的方法,除非您不想重置模拟器中的其他所有内容。
  • 这不是一个选项,我需要不删除我的其余内容。虽然我可以在重置后将其复制回来。
  • 不,我有各种文件(例如 sqlite dbs)来保存我的测试所需的用户数据。
  • 这个答案似乎已经过时了。见stackoverflow.com/questions/2763733/…
【解决方案4】:

我刚刚使用fseventer 来检查点击“清除 Cookie 和数据”按钮时 iPhone 模拟器文件系统会发生什么情况。这些命令复制了这种行为,但是,有一个技巧:

rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Library/Cookies"
rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Library/Caches/Snapshots"
rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Library/Caches/com.apple.mobilesafari"
rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Library/WebKit"
rm -rf "$HOME/Library/Application Support/iPhone Simulator/5.0/Library/Safari"

模拟器需要重新启动。所以,操作文件系统之前,我运行这个:

killall "iPhone Simulator"

【讨论】:

    【解决方案5】:

    您可以转到主屏幕,然后转到设置应用。点击 Safari,然后向下滚动到清除 Cookie。我不确定 cookie 文件在文件系统上的位置,我希望在 /Developer/Platforms/iPhoneSimulator.platform 下的某个地方(请参阅 Matthew Frederick 的回答)。

    【讨论】:

    • 这也是我的想法,但是当我这样做时,它似乎并没有真正清除 cookie。
    【解决方案6】:

    为什么不强制 cookie 过期以进行测试?

    那就完全一样了。

    【讨论】:

      猜你喜欢
      • 2010-10-16
      • 2022-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 2010-11-15
      • 1970-01-01
      相关资源
      最近更新 更多