Web客户端数据存储学习笔记——Cookie
今天对登录访问的安全以及web客户端存储做了一些大致的学习,决定在这方面加深理解,记录在博客里。第一个接触到的是Cookie...
WHAT?
WHY?
HOW?
在学习cookie的使用时发现其名称以及存储的字符串值是必须经过URL编码的。
然而网上的许多示例(包括 w3school中文站)都没有做这一处理,所以三哥参考阮一峰老师的关于URL编码博文找到了解决方案,在这里分享:
cookieUtil.js:
1 //cookieUtil.js 2 var cookieUtil = { 3 4 //读取"name"对应cookie的值 5 get : function(name){ 6 var cookieName = encodeURIComponent(name)+"=", //对传入name参数URL编码 7 cookieStart = document.cookie.indexOf(cookieName), 8 cookieValue = null; 9 10 if(cookieStart > -1){ 11 var cookieEnd = document.cookie.indexOf(";",cookieStart); 12 if(-1 == cookieEnd){ 13 cookieEnd = document.cookie.length; //cookie值为空 14 } 15 //对cookie保存的值URL解码 16 cookieValue = decodeURIComponent(document.cookie.substring(cookieStart+cookieName.length,cookieEnd)); 17 } 18 return cookieValue; 19 }, 20 21 //创建或设置cookie 其中name将作为某一域内的唯一标示、不可更改 22 set : function(name,value,expires,path,domain,secure){ 23 //对名称和值URL编码 24 var cookieText = encodeURIComponent(name)+"="+encodeURIComponent(value); 25 26 if(expires instanceof Date){ 27 cookieText += "; expires="+expires.toGMTString(); 28 } 29 if(path){ 30 cookieText += "; path="+path; 31 } 32 if(domain){ 33 cookieText += "; domain="+domain; 34 } 35 if(secure){ 36 cookieText += "; secure"; 37 } 38 39 //将根据name是否存在决定是否添加新的cookie字符串,需要注意:a、cookie长度(limit:4095B);b、每个域允许的cookie个数(各浏览器决定) 40 document.cookie = cookieText; 41 }, 42 43 //删除cookie 44 unset : function(name,path,domain,secure){ 45 this.set(name,"",new Date(0),path,domain,secure); 46 } 47 48 }
WHEN?
BETTER!
updating
REFERENCE:
1、 关于URL编码
作者:林三竖
欢迎评论指正,转载请注明出处。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步