cookie、localStorage、sessionStorage三种客户端存储方式

cookie

  • cookie是http协议下,服务端或者脚本可以维护客户端信息的一种方式。
  • 域、路径、失效时间和安全性都是服务器给浏览器的指示,它们不会随着请求发送给服务器,发送给服务器的只有名称与值对。

sessionStorage(会话存储)


同源策略: 不同于 Cookie, sessionStorage 访问限制更高,只有当前设定了 sessionStorage 的域下才能访问。
单标签页: 两个相同域下的标签页不能互通。

  • 在关闭标签页或者新开的标签页下都不能访问之前写下的 sessionStorage,如果刷新当前标签页依然可以访问 sessionStorage。

使用sessionStorage保存的数据只是当前页面会保留,即页面会话级别,当关闭浏览器或者关闭页签后sessionStorage保存的数据会被清空,而且在同个浏览器即使相同源,其他页面不可以共享sessionStorage保存的数据。


使用场景:

  • 主要针对会话级的小数据的存储。
  • 存储一些在当前页面刷新仍然需要存储,但是关闭后不需要留下的信息。
  • 很适合单页应用的使用,可以用来存储登录态信息等。

localStorage(本地存储)


同源策略:和 sessionStorage 一样,要访问同一个 localStorage 页面必须来自同一个域名,同种协议,同种端口。

  • localStorage 设定后,刷新或者重新打开标签页,关闭浏览器重新打开原来的标签页也可以访问到。


使用的场景:

  • 持久性的保存客户端数据,只能通过 JavaScript 删除或者用户清除浏览器缓存。
  • 如果有一些稍大量的数据,例如编辑器的自动保存等。
  • 多页面间访问共同数据。 sessionStorage 只能用于一个标签页,而localStorage可以在多个标签页之间共享。
     

LocalStorage 与 SessionStorage出现原因:

  • 克服 Cookie 的一些限制,同时存储一些需要严格控制在客户端,不需要发送给服务器的一些数据。
  • 提供了除 Cookie 之外的另一种存储会话的途径。
  • 提供了一种大容量存储空间来跨回话存储数据的途径。

cookies,sessionStorage和localStrorage的区别

  1. cookie在浏览器和服务器间来回传递。sessionStorage和localStorage不会;
  2. sessionStorage和localStorage的存储空间更大;
  3. sessionStorage和localStorage有更多丰富易用的接口;
  4. sessionStorage和localStorage各自独立的存储空间;

三者的区别和特点

  1. cookie是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。
  2. cookie数据始终在同源的http请求中携带(即使不需要),即会在浏览器和服务器间来回传递。
  3. sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存
  4. 存储大小:
    cookie数据大小不能超过4K
    sessionStorage和localStorage虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大
  5. 有期时间:
    localStorage:存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
    sessionStorage:数据在当前浏览器窗口关闭后自动删除
    cookie:设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭


 三者的共同点及区别(分开总结)


共同点
localStorage和sessionStorage和cookie共同点

  • 同域(同源策略)限制:同源策略:请求与响应的 协议、域名、端口都相同时同源,否则为 跨源/跨域;
  • 存储的内容都会转为字符串格式
  • 都有存储大小限制

localStorage和sessionStorage共同点

  • API相同
  • 存储大小限制一样基本类似
  • 无个数限制

区别
localStorage

  • 没有有效期,除非删除,否则一直存在
  • 同域下页面共享
  • 支持 storage 事件

sessionStorage

  • 浏览器关闭,自动销毁
  • 页面私有
  • 不支持 storage 事件

cookie

  • 浏览器也会在每次请求的时候主动组织所有域下的cookie到请求头 cookie 中,发送给服务器端
  • 浏览器会主动存储接收到的 set-cookie 头信息的值
  • 可以设置 http-only 属性为 true 来禁止客户端代码(js)修改该值
  • 可以设置有效期 (如果不设置,默认浏览器关闭自动销毁)(不同浏览器有所不同)
  • 同域下个数有限制,最好不要超过50个(不同浏览器有所不同)
  • 单个cookie内容大小有限制(比会话、本地存储小),最好不要超过4000字节(不同浏览器有所不同)
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值