localStorage vs sessionStorage vs cookies

Non*_*Non 58 cookies html5 session-cookies local-storage angularjs

我在一个应用程序中工作,我需要在用户登录期间保留一些数据,我有这个问题,localStorage,sessionStorage,cookies有什么区别???

我问我可以使用什么来保存DOM中的一些数据,即使用户刷新页面,有些人说:使用sessionStorage或localStorage,然后,有人提出使用ngCookies的想法因为它可以工作每个浏览器,但是,我应该使用哪个?

Rou*_*uby 87

localStoragesessionStorage都是所谓的WebStorage和HTML5的功能.

只要用户不删除它们,localStorage就会存储信息.

sessionStorage只要会话进行就存储信息.通常直到用户关闭选项卡/浏览器.

cookies只是cookie,旧版浏览器支持它们,通常是使用上述WebStorages的框架的后备.

相比之下,cookie可以存储比WebStorage更少的信息,并且WebStorage中的信息永远不会传输到服务器.

请记住,欧盟有一项规定要求网站告知其用户有关cookie的使用情况.我不知道这是否也适用于WebStorages

  • "我不知道这是否也适用于WebStorages" - 确实如此.https://ico.org.uk/for-organisations/guide-to-pecr/cookies-and-similar-technologies/ (10认同)
  • 取决于,如果您需要支持旧浏览器(HTML5之前),您需要cookie.否则我个人会使用存储(localStorage,如果你需要'永远',否则sessionStorage)因为我喜欢使用新功能;) (3认同)
  • 欧盟法规仅要求您同意 cookie/存储(如果它们不是您服务的重要组成部分)。用于广告的 Cookie 需要同意,用于登录表单或购物车的 Cookie 不需要同意(请参阅 Quentin 的链接以获取说明)。 (2认同)

Jac*_*ong 17

sessionStorage对象: sessionStorage对象仅存储会话的数据,这意味着在浏览器(或选项卡)关闭之前存储数据.在本地运行文件时它不可用.

存储在sessionStorage对象中的数据只能从最初存储数据的页面访问; 所以这不符合您的要求

localStorage对象: 使用localStorage对象存储的数据将保持不变,直到通过JavaScript专门删除它或用户清除浏览器的缓存.

存储在localStorage对象中的数据只能从最初存储数据的域访问.

对于您的情况,我认为您考虑使用cookie或会话,请.note cookie每个服务器有4K大小限制.


小智 6

LocalStorage - 存储没有过期日期的数据,并且只能通过 JavaScript 清除,或清除浏览器缓存/本地存储的数据。存储限制是三者中的最大值

SessionStorage - sessionStorage 对象仅存储会话的数据,这意味着数据将一直存储到浏览器(或选项卡)关闭为止。数据永远不会传输到服务器。存储限制大于 cookie(至少 5MB)。

Cookie - 存储必须通过后续请求发送回服务器的数据。其过期时间因类型而异,过期持续时间可以从服务器端或客户端(通常从服务器端)设置。Cookie主要供服务器端读取(也可以在客户端读取),localStorage和sessionStorage只能在客户端读取。大小必须小于 4KB。通过将 cookie 的 httpOnly 标志设置为 true 可以确保 Cookie 的安全。这会阻止客户端访问该 cookie。


Ali*_*Ali 5

除了其他答案之外,WebStorages 无法访问子域和/或父域。