6

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

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

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

我已经尝试了以下方法:

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

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

4

6 回答 6

22

您可以重置模拟器

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

iPhone 模拟器重置 Cookie

于 2010-12-13T09:12:23.243 回答
14

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

    //Delete previous cookies
    NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
    for (NSHTTPCookie *each in [[[cookieStorage cookiesForURL:YOUR_URL] copy] autorelease]) {
        [cookieStorage deleteCookie:each];
    }
于 2010-12-13T13:29:34.133 回答
9

Cookie 位于:

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

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

于 2010-12-13T09:14:17.847 回答
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"
于 2012-03-03T00:50:39.490 回答
0

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

于 2010-12-13T09:06:58.873 回答
-1

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

那是完全一样的。

于 2010-12-13T09:01:07.883 回答