清除iPhone模拟器的cookies

7
我有一个应用程序,它会向REST服务发送请求。使用cookie进行身份验证。这已经可以工作。
我的问题是如何测试当cookie无效时,代码必须重新验证的情况。要测试这个,我必须等待cookie失效,这可能需要一些时间。为了加速这个过程,我想如果我删除cookie将会产生同样的效果。
如何在iPhone模拟器上删除应用程序的所有cookie?
我已经尝试过以下方法:
删除<app-dir>/Library/Cookies/Cookies.binarycookies不起作用。我的cookie似乎从未写入此文件。
在应用程序启动时删除NSHTTPCookieStorage中的所有cookie也不起作用。

重置模拟器为什么对你行不通? - aepryus
7个回答

22

您可以重置模拟器

  • 启动模拟器。
  • 单击“菜单栏”的第一个选项。它写着“iOS 模拟器”。
  • 一个菜单将会出现。向下滚动三个选项到“重置内容和设置”。
  • 点击弹出的对话框上的“重置”按钮。

iPhone Simulator Reset Cookies


重置它确实很可能是最简单的方法,除非您不想重置模拟器中的其他所有内容。 - Matthew Frederick
那不是一个选项,我需要保留我的其余内容而不被删除。虽然我可以在重置后将其复制回来。 - sliver
不,我有各种文件(如sqlite数据库)保存用户数据,这些数据对我的测试是必需的。 - sliver
这个答案似乎已经过时了。请参考https://dev59.com/6HE85IYBdhLWcg3wdDSz - mpelzsherman

14

你可能会发现,在SDK代码中进行此操作比修改文件系统更容易成功。 尝试:

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

运行得像魔法一样。你救了我的一天!! - Di Wu

9

这些cookies位于以下位置:

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

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


那似乎只适用于4.x之前的SDK。我有那个文件,但它从春季以来没有更新过。 - sliver
2
删除Cookies/Cookies.binarycookies对我来说绝对有效,参见上文。 - Matthew Frederick
@Balint 对,这就是我的答案所说的。 - Matthew Frederick
应用程序支持文件夹中没有 iPhone 模拟器文件夹,它可能在哪里? - Martin Braun
4
@modiX,这个回答是2010年的。自那以来有很多变化。重置模拟器可能是最好的选择。如果您需要删除单个cookie但保留其他内容,则应该能够在Library/Developer/CoreSimulator/Devices/DEVICEIDENTIFIERHERE/data/Library/Cookies中找到它们。 将“DEVICEIDENTIFIERHERE”替换为该设备的37个字符的UUID目录名称。如果您只按“修改日期”在Finder中排序,就能找到正确的目录。 - Matthew Frederick
显示剩余3条评论

2

我刚刚使用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"

0
你可以前往主屏幕,然后找到设置应用。点击Safari,然后向下滑动到“清除Cookie”选项。我不确定Cookie文件在文件系统的哪个位置,但根据Matthew Frederick的回答,可能在/Developer/Platforms/iPhoneSimulator.platform的某个地方。

这也是我的想法,但实际上清除 cookies 的操作似乎并没有生效。 - Matthew Frederick

0

在较新的MacOS版本中重置模拟器:

启动模拟器。

  • 点击“菜单栏”上的“设备”。
  • 会出现一个菜单。向下滚动两个选项到“擦除所有内容和设置…”
  • 点击弹出的对话框上的“重置”

how to reset ios simulator


-1
为什么不将Cookie过期时间设置为较低的值进行测试呢?
那就完全一样了。

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