我的iPhone应用程序中的NSHTTPCookieStorage出现了一些奇怪的问题。当我在web服务上调用login操作时,该服务会传回一个名为" auth“的auth cookie以及一些其他cookie。
当我注销用户时,我在服务器上调用一个注销操作来删除cookie。如果我在调用NSHTTPCookieStorage之前打印注销cookie的结果,我会看到预期的身份验证cookie。注销后,我看到auth cookie不再存在(不出所料)。
但是,如果我关闭应用程序并重新启动它,身份验证cookie又回来了!
我不知道这是怎么回事。如果NSHTTPCookieStorage只是简单地不保存任何cookie,这是一回事,但它似乎正在保存其中的一些cookie。
有人知道发生了什么吗?是否需要手动管理cookies?有什么方法可以将NSHTTPCookieStorage中的内容提交到磁盘上吗?
发布于 2010-11-02 19:42:01
有三种与URL请求相关的本地存储机制会对如何处理身份验证挑战产生影响:(显然) NSHTTPCookieStorage、NSURLCredentialStorage和NSURLCache。NSURLCredentialStorage可能是您应该关注的下一个地方,但清除所有缓存通常被认为是获得您想要的效果的最可靠方法。
这段代码很方便:https://gist.github.com/559071 (清除所有缓存)。
发布于 2010-11-08 10:59:04
尼克,我假设你是在iOS4.xSDK和XCode 3.x上构建的。这可能不太可能,但您提到要关闭应用程序,然后重新启动它。从iOS4.x开始,iPhone应用默认开启多任务。这意味着,无论你想不想要它,如果你像往常一样简单地关闭它,你的应用程序将留在内存中。解决这个问题的方法是进入你的app-name-Info.plist,将“应用程序不在后台运行”键添加到列表中。然后选中复选框。我建议你在保存你的项目后,在这一点上做一个完整的清理和构建。此外,如果您在模拟器中运行,建议您通过选择"iPhone模拟器“,然后从应用程序下拉菜单中选择"Reset Content and Settings”来完全重置模拟器。
发布于 2011-03-24 19:33:42
我也遇到了同样的问题,我用NSUserDefaults解决了它。
请参考this link。
https://stackoverflow.com/questions/4056858
复制相似问题