有关NSHTTPCookieStorage的cookie接受政策的Apple文档令人困惑.
这就是文档所说的:
NSHTTPCookieStorage实现管理cookie存储的单例对象(共享实例).每个cookie由NSHTTPCookie类的实例表示.通常,cookie在所有应用程序之间共享,并跨进程边界保持同步.会话cookie(cookie对象的isSessionOnly方法返回YES)是单个进程的本地cookie,不共享.
iOS注意:在iOS中的应用程序之间不共享Cookie.
注意:对cookie接受策略所做的更改会影响使用cookie存储的所有当前正在运行的应用程序.
以下关于 - (void)setCookieAcceptPolicy:(NSHTTPCookieAcceptPolicy)aPolicy
默认的cookie接受策略是NSHTTPCookieAcceptPolicyAlways.更改cookie策略会影响使用cookie存储的所有当前运行的应用程序.
现在我的第一个想法是,如果应用程序调用setCookieAcceptPolicy,更改将影响其他正在运行的应用程序.情况似乎并非如此.调用setCookieAcceptPolicy只会影响调用它的应用程序.
适用于所有正在运行的应用程序的唯一cookie策略是Safari.在app 7调用setCookieAcceptPolicy之前的iOS 7中,它使用了safari策略.因此,如果将safari cookie策略设置为始终阻止,则任何应用程序在设置自己的cookie策略之前将无法使用cookie.我知道自从iOS 7问世以来,这已经导致了很多应用程序的问题.
我的观察是否正确,或者我错过了什么?
编辑
我已经向Apple提出了一个错误,等待现在回复他们.
小智 14
我在我的应用程序上运行了一些测试,发现在iOS 7上,应用程序的默认cookie策略设置为Safari的cookie策略.更改Safari中的cookie策略,查杀,然后重新启动我的应用程序,也会更改我的应用程序中的cookie策略.将以下行添加到我的每个应用中:
[[NSHTTPCookieStorage sharedHTTPCookieStorage] setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
Run Code Online (Sandbox Code Playgroud)
会相应地更改我的应用程序,但不会对Safari产生任何影响.此外,更改一个应用程序似乎并没有影响我的任何其他应用程序.