cookie、locakstorage、sessionstorage的区别
cookie |
localstorage |
sessionstorage |
|
数据的生命周期 |
可以设置失效时间,一般默认为浏览器关闭后 |
若不被清除,则永久保存 |
存在于一次会话中,刷新页面数据仍然存在,但关闭页面或浏览器失效 |
存储数据的大小 |
大约4k
|
大约5MB | 大约5MB |
与服务端通信 |
每次都会携带在http头中,使用cookie保存过多数据会带来性能问题 |
客户端存储,不参与服务端通信 |
客户端存储,不参与服务端通信 |
易用性 |
原生的cookie接口不友好,需要程序员自己封装 |
可以使用原生接口,也可以自己封装,对object和array有更好的支持 |
可以使用原生接口,也可以自己封装,对object和array有更好的支持 |
应用场景 |
用户登录:对于登录过的用户,再次登录时想cookie中插入一段加密过的唯一识别该用户的辨识码,下次只要读取这个值就可以判断该用户是否登录。 曾经用于电商网站用户购物车信息,现在一般用localstorage |
HTML5游戏需要本地存储,可以用localstorage |
当有比较多的表单信息,为了更好地用户体验,需要分为若干子页面给用户填写,这时用sessionstorage |
cookie:
1、不同浏览器存储cookie的位置不同(浏览器差异)
2、按域名存储,不同域名的网站cookie存储的位置不同
3、按名值对存储
documen.cookie 可读可写的属性
设置cookie过期时间,5天之后过期
var date=new Date(); date.setDate(date.getDate()+5);
date.toGMTString(); document.cookie='username=lily;expires='+date; //过期日期date必须是字符串格式时间类型的数据
编码与解码:encodeURI(字符),decodeURI(字符)
document.cookie返回的各名值对以‘; ’隔开,以下函数根据cookie名获取对应值
function getCookie(key){ var arr1=document.cookie.split('; '); for(var i=0;i<arr1.length;i++){ var arr2=arr1[i].split('='); if(arr2[0]==key) return arr2[1]; }
设置cookie
function ssetCookie(key,value,t){//t为过期时间 var date=new Date(); date.setDate(date.getDate()+t); document.cookie=key+'='+value=';expires='+date.toGMTString(); }
安全性:不要用他们存储敏感数据
XSS:跨站脚本攻击 (crossing site scripting)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现