我从 ios 登录到我的 tornado 后端并发回了一个secure_cookie,我注意到只要我验证了我设置的secure_cookie,我也可以请求其他信息。NSURLConnection 将 cookie 保留多长时间,或者一旦关闭应用程序,cookie 会被删除?
Apple文档中提到了这一点:
URL 加载系统会自动发送任何适合 NSURLRequest 的存储 cookie。除非请求指定不发送 cookie。
我从 ios 登录到我的 tornado 后端并发回了一个secure_cookie,我注意到只要我验证了我设置的secure_cookie,我也可以请求其他信息。NSURLConnection 将 cookie 保留多长时间,或者一旦关闭应用程序,cookie 会被删除?
Apple文档中提到了这一点:
URL 加载系统会自动发送任何适合 NSURLRequest 的存储 cookie。除非请求指定不发送 cookie。
您的问题的几个方面。
首先,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。