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编码

2、Cookie/Session机制详解

posted @   林三竖  阅读(541)  评论(1编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示