cookie、localStorage、sessionStorage的区别

345 阅读2分钟

三者都是浏览器的本地存储,不同点可以从写入方式、生命周期、存储大小、应用场景等方面说起。

不同点

写入方式

  • cookie一般是由服务器端写入,sessionStorage和localstorage由前端写入;
  • cookie在发送请求时候会自动被携带在请求头中。
    另外,三者的数据共享都遵循同源策略,sessionStorage限制必须是同一个页面。

生命周期

  • cookie的生命周期在写入的时候设置;
  • localStorage永久性的保存在浏览器中,除非手动清除;
  • sessionStorage在页面关闭时候会自动清除;

存储大小

  • cookie较小,最大为4kb
  • localStorage、sessionStorage为5M

拓展

cookie

之前一直存在一个疑问,就是cookie怎么被自动携带在请求中? 最近用的若依框架中,登录成功前端拿着token存到cookie中,之后发送请求的时候,在请求拦截器中配置在请求头中携带‘Authorization’; image.png
image.png
然后我在请求头中也并没有找到cookie啊,那为什么说会自动携带cookie?原来是因为cookie遵循的同源策略。添加‘Authorization’可以很好的避免因为同源策略带来的获取不到cookie、验证不了用户登录信息的问题。
前端写入cookie:在浏览器的控制台document.cookie可以查看浏览器的cookie;通过document.cookie='要存入的cookie'可以存入cookie;

同源策略

同源策略是一种保证浏览器安全访问的约定,同源策略值允许访问同一站点下的资源;同源策略下,如果不是同源的站点,将不能进行以下操作:

  1. 禁止对不同源的DOM进行操作。主要场景是iframe的跨域情况,不同域名的iframe限制互相访问;
  2. 禁止使用XHR对象向不同源的服务器地址发起HTTP请求;
  3. Cookie、localStorage、indexDB无法获取

下期预告:CORS跨域资源共享