cookie&session&localStorage&sessionStorage&&token

136 阅读2分钟

cookie

cookie背景


cookie大小

大小根据浏览器的不同而不同,一般情况默认4KB


cookie分类

根据保存周期分类:


cookie查看

窗口的cookie:通过控制台的Application中查看

网页的cookie:document.cookie


session

localStorage&sessionStorage

两者的共同点在于

1、存储大小均为5M左右

2、都有同源策略限制

3、仅在客户端中保存,不参与和服务器的通信


两者的不同点在于:

1、生命周期 —— 数据可以存储多少时间

localStorage: 存储的数据是永久性的,除非用户人为删除否则会一直存在。

sessionStorage: 与存储数据的脚本所在的标签页的有效期是相同的。一旦窗口或者标签页被关闭,那么所有通过 sessionStorage 存储的数据也会被删除。

2、作用域 —— 谁拥有数据的访问权

localStorage: 在同一个浏览器内,同源文档之间共享 localStorage 数据,可以互相读取、覆盖。

sessionStorage: 与 localStorage 一样需要同一浏览器同源文档这一条件。不仅如此,sessionStorage 的作用域还被限定在了窗口中,也就是说,只有同一浏览器、同一窗口的同源文档才能共享数据。

为了更好的理解sessionStorage,我们来看个例子:

例如你在浏览器中打开了两个相同地址的页面A、B,虽然这两个页面的源完全相同,但是他们还是不能共享数据,因为他们是不同窗口中的。但是如果是一个窗口中,有两个同源的iframe元素的话,这两个iframe的 sessionStorage 是可以互通的。

localStorage使用

//sessionStorage用法相同
localStorage.setItem("name",1);   // 以"x"为名字存储一个数值
localStorage.getItem("name");     // 获取数值
localStorage.key(i);              // 获取第i对的名字
localStorage.removeItem("name");  // 获取该对的值
localStorage.clear();             // 全部删除

token

问题系列

为什么token不会被劫持?


区别系列

参考资料

jerryzou.com/posts/cooki…

juejin.cn/post/684490…