首页 > 试题广场 >

请描述一下 cookies , sessionStorage

[问答题]
请描述一下 cookies sessionStorage localStorage 的区别

应用场景

有了对上面这些差别的直观理解,我们就可以讨论三者的应用场景了。

因为考虑到每个 HTTP 请求都会带着 Cookie 的信息,所以 Cookie 当然是能精简就精简啦,比较常用的一个应用场景就是判断用户是否登录。针对登录过的用户,服务器端会在他登录时往 Cookie 中插入一段加密过的唯一辨识单一用户的辨识码,下次只要读取这个值就可以判断当前用户是否登录啦。曾经还使用 Cookie 来保存用户在电商网站的购物车信息,如今有了 localStorage,似乎在这个方面也可以给 Cookie 放个假了~

而另一方面 localStorage 接替了 Cookie 管理购物车的工作,同时也能胜任其他一些工作。比如HTML5游戏通常会产生一些本地数据,localStorage 也是非常适用的。如果遇到一些内容特别多的表单,为了优化用户体验,我们可能要把表单页面拆分成多个子页面,然后按步骤引导用户填写。这时候 sessionStorage 的作用就发挥出来了。

安全性的考虑

需要注意的是,不是什么数据都适合放在 Cookie、localStorage 和 sessionStorage 中的。使用它们的时候,需要时刻注意是否有代码存在 XSS 注入的风险。因为只要打开控制台,你就随意修改它们的值,也就是说如果你的网站中有 XSS 的风险,它们就能对你的 localStorage 肆意妄为。所以千万不要用它们存储你系统中的敏感数据。


编辑于 2017-08-05 22:19:15 回复(0)
cookies由服务器生成,可设置失效时间,如果浏览器端生成了cookies,则浏览器关闭时cookies默认失效。
sessionStorage仅存在于当前会话下,页面或浏览器关闭后就会被清除。 
localStorage除非被清除,否则永久存在。
cookies 的容量比sessionStorage 和 localStorage 小, cookies大约4k, localStorage 大约4M. 
发表于 2017-08-04 16:06:33 回复(0)
1. 大小
    cookies 的容量比sessionStorage 和 localStorage 小, cookies大约4k, localStorage 大约4M. 
2. 在http请求上
    cookies会被附件到http请求上
3. api接口
   cookies的api不亲民, sessionStorage 和 localStorage的更简洁
4. 持久化
   localStorage上的数据 会在本地持久化, sessionStorage会随着本次会话, 数据清除。
发表于 2017-08-03 11:27:33 回复(0)
cookie用于存储浏览器端用户登录数据和表单数据,最大不能超过4M
sessionStorage用于本地数据临时存储,关闭浏览器会自动清除
localStorage用于本地数据永久存储,不能自动清除,需要手动清理
发表于 2017-08-02 22:03:14 回复(0)
cookie在服务器生成发送到客户端,每次请求跟随请求头发送到服务器
sessionStorage和localStorage在浏览器端生成,
cookie大小限制在5kb内
sessionStorage和localStorage可以设置到5MB
cookie可以通过设置Expires来规定cookie过期时间
sessionStorage仅在当前浏览器窗口关闭前有效
localStorage除非主动删除否则一直存在

发表于 2021-09-09 20:58:58 回复(0)
相同点:都是存储在客户端
不同点:1.存储大小不同,cookie数据仅能存储不超过4k的数据,而sessionStorage和localStorage虽有限制,但是可以达到5M或更多。
2.有效时间不同,sessionStorage存储的数据在当前浏览器关闭后就会自动删除,而localStorage存储的数据即使当前页面关闭也不会删除,除非手动删除数据。cookie存储的数据在设置cookie的有效期的时间内无论是否关闭窗口都有效,只有过了有效期,cookie的数据就会被删除。
3.数据与服务器之间的交互方式不同,cookie的数据会自动传到服务器端,同时服务器端又会写cookie到客户端,而sessionStorage和localStorage都不会自动把数据发给服务器,仅在本地存储。
发表于 2019-10-10 23:29:20 回复(0)

cookie数据始终在同源的http请求中携带(即使不需要),即cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。

cookie数据还有路径(path)的概念,可以限制cookie只属于某个路径下。存储大小限制也不同,cookie数据不能超过4k,同时因为每次http请求都会携带cookie,所以cookie只适合保存很小的数据,如会话标识。sessionStorage和localStorage 虽然也有存储大小的限制,但比cookie大得多,可以达到5M或更大。

数据有效期不同,sessionStorage:仅在当前浏览器窗口关闭前有效,自然也就不可能持久保持;localStorage:始终有效,窗口或浏览器关闭也一直保存,因此用作持久数据;cookie只在设置的cookie过期时间之前一直有效,即使窗口或浏览器关闭。

作用域不同,sessionStorage不在不同的浏览器窗口敏感词享,即使是同一个页面;localStorage 在所有同源窗口中都是共享的;cookie也是在所有同源窗口中都是共享的。

Web Storage 支持事件通知机制,可以将数据更新的通知发送给监听者。Web Storage 的 api 接口使用更方便。

 

发表于 2017-08-03 14:48:21 回复(0)
三者的区别主要在于数据的生存期和存储容量。关于数据生存期,cookie数据的生存期取决于开发人员或者用户的设置,localStorage可以实现永久存储,sessionStorage仅在窗口关闭之前有效。关于数据储存容量,cookie大概是4k,localStorage和sessionStorage可以达到5M以上(浏览器间略有差异)。同时,它们也有其它的一些差异。比如,跨标签页通信只能使用localStorage,而要跟服务器交流则要通过cookie,localStorage和sessionStorage的API比起cookie好用多了...... 

 详情请看我在简书写的文章《简述cookie、localStorage、sessionStorage
编辑于 2017-02-28 21:52:48 回复(0)