【发布时间】:2013-09-27 19:32:26
【问题描述】:
关于 NSHTTPCookieStorage 的 cookie 接受政策的 Apple 文档令人困惑。
这是文档所说的:
NSHTTPCookieStorage 实现了一个管理 cookie 存储的单例对象(共享实例)。每个 cookie 都由 NSHTTPCookie 类的一个实例表示。通常,cookie 在所有应用程序之间共享,并且跨进程边界保持同步。会话 cookie(cookie 对象的 isSessionOnly 方法返回 YES)对于单个进程是本地的,并且不共享。
iOS 注意: Cookie 不会在 iOS 中的应用程序之间共享。
注意:对 cookie 接受策略所做的更改会影响所有当前正在使用 cookie 存储运行的应用程序。
还有以下关于 - (void)setCookieAcceptPolicy:(NSHTTPCookieAcceptPolicy)aPolicy
默认的 cookie 接受策略是 NSHTTPCookieAcceptPolicyAlways。更改 cookie 策略会影响所有当前运行的使用 cookie 存储的应用程序。
现在我的第一个想法是,如果一个应用程序调用 setCookieAcceptPolicy,更改会影响其他正在运行的应用程序。情况似乎并非如此。调用 setCookieAcceptPolicy 只会影响调用它的应用程序。
适用于所有正在运行的应用程序的唯一 cookie 策略是 Safari 策略。在 iOS 7 中,在应用调用 setCookieAcceptPolicy 之前,它使用 safari 策略。因此,如果将 safari cookie 策略设置为始终阻止,那么任何应用程序都将无法使用 cookie,直到它设置自己的 cookie 策略。据我了解,自从 iOS 7 推出以来,这已导致许多应用出现问题。
我对这一切的观察是否正确,还是我遗漏了什么?
编辑
我向 Apple 提出了一个错误,现在正在等待他们的回复。
【问题讨论】:
-
我无法重现此问题。我正在使用装有 iOS 7.0.4 的 iPod。在我将 Safari 设置中的 cookie 策略设置为始终阻止并重新启动未设置任何 cookie 接受策略的应用程序后,cookie 接受策略仍然是
NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain。