了解iOS Cookie接受政策

Roh*_*nNZ 16 cookies ios

有关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产生任何影响.此外,更改一个应用程序似乎并没有影响我的任何其他应用程序.

  • 我做了同样的工作:)这应该在app委托上使用:) (2认同)