js中的cookie及封装

概念参考高级编程:

1.什么是cookie  

cookie是用于客户端储存会话的信息; 格式key=value;

2.cookie的构成

名称:一个唯一去顶的cookie的名称,不区分大小写,cookie的名称必须是经过URL编码的;

值:存储cookie中的字符串,值必须被URL编码

域:cookie对于哪个域是有效的,所有向该域发送的请求中都会包含这个cookie信息,这个值可以包含子域,也可以不包含这个cookie信息,如果没有明确设定,那么这个域会被认作来自设置cookie的那个域

路径:对于指定域中的那个路径,应想服务器发送cookie,加入你可以指定cookie只有从 http://www.person.com/mark 中才能访问,那么http://www.person.com 就不会发送cookie信息,即使请求都是来自一个域

失效时间:表示cookie何时被删除的时间戳(何时停止向服务器发送这个cookie)默认情况下,浏览器结束会话时,即将所有cookie删除,不过也可以设置删除时间,这个值是GMT的格式的日期,用于指定删除该cookie的标准时间,

因此cookie可以在浏览器关闭后依然保存在用户的机器上,如果设置失效时间是以前的时间,cookie会立刻被删除

每一段信息都作为set-cookie头的一部分,使用分号加空格分隔每一段

Set-Cookie: name=value; expires=Mon, 22-Jan-07 07:10:24 GMT; domain=.wrox.com

3.js中的cookie的操作: 读取,写入,删除,代码如下

var cookieUtil = {
        set: function (name, value, expiresDay) {
            var expiresDate = new Date();
            expiresDate.setDate(expiresDate.getDate() + expiresDay);
            value = encodeURIComponent(value);
            var mycookie = name + '=' + value + ';expires=' + expiresDate;
            document.cookie = mycookie;
        },
        get: function (name) {
            name = encodeURIComponent(name);
            var cookielenght = document.cookie.length;
            var arr = document.cookie.split('; ');
            for (var i = 0; i < arr.length; i++) {
                var arr2 = arr[i].split('=');
                if (arr2[0] == name) {
                    return decodeURIComponent(arr2[1]);
                }
            }
            return '';
        },
        remove: function (name) {
            this.set(name, 1, -1);
        }
    };

4:cookie的工作原理

1).客户端通过浏览器发送报文给服务器,请求连接

2).服务器根据收到的请求,建立 Set-Cookies Header,并返回给客户端

3).客户端解析返回内容解析并保存cookie

5:cookie的局限性

1).每个特定的域名下只能产生10个cookie

2).cookie的最大大约是4096字节(4k),为了更好的兼容性,一般不能超过4095字节。

3).cookie存储在客户端的文本文件,所以特别重要和敏感的数据是不建议保存在cookie中的。这里是考虑安全性的问题。

4:cookie的应用:

cookie可以用于保存数据,比如购物车,保存用户名密码

原文地址:https://www.cnblogs.com/MarkSun3/p/9253888.html