$ window.sessionStorage vs $ cookieStore

时间:2014-06-05 20:48:05

标签: javascript angularjs cookies session-storage cookiestore

使用$ cookieStore和& window.sessionStorage有什么区别?是否有时候应该使用另一个?安全问题?

目前我所知道的是:

AngularJS文档声明$ cookieStore服务由"会话cookie支持" (https://docs.angularjs.org/api/ngCookies/service/ $的CookieStore)。因此,使用$ cookieStore存储的信息似乎与使用它的窗口/选项卡相关联。在$ cookieStore的代码中使用神秘的$ browser服务确认了这一点:https://github.com/angular/angular.js/blob/master/src/ngCookies/cookies.js#L125

但是,由于$浏览器是一项内部服务并且可能会发生变化,因此无法查看它是如何存储数据的,以查看它是否与sessionStorage类似。

相同的浏览器/标签/窗口范围似乎适用于$ window.sessionStorage(Scope of sessionStorage and localStorage)。

1 个答案:

答案 0 :(得分:33)

使用会话cookie的$ cookieStore意味着数据被保存为作用于会话的cookie,即不是持久的。 Cookie的范围限定在其注册的特定域中,但可以在子域之间共享。关于cookie存储的重要事项是,对于对该域的任何请求,这些cookie值将被发送到服务器。它将在同一域中同一会话中的窗口和选项卡之间共享。

$ window.sessionStorage只是访问window.sessionStorage,它与Angular无关。通过$ window访问它只是让你能够使用模拟版本的$ window更轻松地进行测试。会话存储的范围限定为当前窗口,因此与cookie不同,如果您打开一个新选项卡到完全相同的URL,它将是一个新的sessionStorage对象。存储空间比cookie还多。 Cookie限制为4K,sessionStorage可能因浏览器而异,但通常约为5MB。

还有window.localStorage(或$ window.localStorage),它与sessionStorage基本相同,除了它是由域限定的(两个标签可以共享相同的数据 - 甚至是存储事件,以便您可以找到其他标签何时更改)并在您关闭浏览器时保持不变。