17

我从 ios 登录到我的 tornado 后端并发回了一个secure_cookie,我注意到只要我验证了我设置的secure_cookie,我也可以请求其他信息。NSURLConnection 将 cookie 保留多长时间,或者一旦关闭应用程序,cookie 会被删除?

Apple文档中提到了这一点:

URL 加载系统会自动发送任何适合 NSURLRequest 的存储 cookie。除非请求指定不发送 cookie。

4

2 回答 2

26

您的问题的几个方面。

首先,NSURLConnection 默认会根据设备的设置来管理 cookie。它会将 cookie 保存到商店并在适当的时候发送它们(当域与现有 cookie 匹配时)。这意味着如果您从带有保存在 cookie 存储中的 cookie 的 URL 发出请求,它将被发送。这解释了您提到的行为。通常,在默认设置下,cookie 会持续一段时间。

但是,此初始声明可能对您的需求没有帮助。我假设您可能希望控制此secure_cookie字段的到期(或“永远”保留),以便您的应用将来不必进一步进行身份验证。

在这种情况下,NSHTTPCookieStorage是要看的地方。此类将允许您检索:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:[NSURL URLWithString:@" http://example.com "]]

并设置:

[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookie:cookie](加上设置cookie字典对象)

根据经验和网上其他人的反馈,您应该注意 cookie 的存储并不总是 100% 可靠。如果您想向服务器发送特定的 cookie 和值,您应该将该值存储在您的应用程序中(例如 prefs 或 Core Data),并NSHTTPCookieStorage在每次启动时使用适当的值重置 cookie。

于 2012-08-21T03:34:14.930 回答
2

您必须从这里查看 cookie 缓存管理 这将帮助您更好地了解如何处理 cookie 的缓存。

还有另一个非常好的描述,其中提到您可以从标头字段中获取 cookie,然后您可以完全控制它。如果需要,请在应用程序再次启动时存储和使用。

我希望这可以帮助您解决它。

于 2012-08-21T04:56:46.947 回答