我的iPhone应用程序中有NSHTTPCookieStorage的一些奇怪的问题。当我在我的Web服务上调用登录操作时,服务会发回一个名为“auth”的授权cookie以及其他一些cookie。为什么NSHTTPCookieStorage不能正确保存cookie?
当我将用户登录出去时,我会在服务器上调用注销操作来删除cookie。如果我在调用注销之前打印[NSHTTPCookieStorage cookies]的结果,我会按预期看到auth cookie。在我注销后,我发现auth cookie不再存在(如预期的那样)。
但是,如果我关闭了应用程序并重新启动它,auth cookie又回来了!
我不确定这里发生了什么事。如果NSHTTPCookieStorage没有保留任何cookie,这将是一回事,但它似乎是挽救了其中的一些。
有谁知道发生了什么事?我需要手动管理Cookie吗?有什么办法将NSHTTPCookieStorage中的内容提交到磁盘?
我也看到相关的行为,如果我从Web请求收到一个cookie,确认它存在,然后在几秒钟后关闭应用程序(并将其从背景托盘中移除),则Cookie不在当我启动应用程序。然而,这并不一致。 – 2010-12-15 01:47:41
abraginsky:不幸的是,这正是我所看到的。我通过将相关cookie保存在NSUserDefaults中并在应用程序启动时从用户默认值填入NSHTTPURLCookieStorage来解决此问题。它完成了这项工作,但是找出NSHTTPCookieStorage有什么问题是很好的。 – Bill 2010-12-15 02:07:07
是的,我看到了相同的解决方法,目前正在努力实施它。在用户从后台托盘中终止应用程序之前,需要确保NSUserDefault正在用cookie快速更新。把它放在“将终止”将不起作用,因为这没有被调用(至少在模拟器中)。 – 2010-12-15 02:33:31