欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Cookie增删改查

程序员文章站 2022-05-15 18:28:37
...

cookie

Cookie增删改查

浏览器请求访问服务器,用请求头 首部行等信息来获取数据,服务器就会给出响应头,以及set-cookie(给出的是唯一的cookie)之后就返回给浏览器。当浏览器第二次请求的时候,除了发送请求头之外还要发送cookie:id =’12345’.这样服务器就会去找到这个cookie 并返回数据给浏览器。

    控制台 document.cookie得到的是字符串。

一个cookie后面的东西都会被看成是对“;”前面的数据的描写,只当成一个cookie 多个cookie要分开写。

 var oDate = new Date();
           oDate.setDate(oDate.getDate()+3);
           console.log(oDate);
    document.cookie = 'age=18;max-age=1000;';
    document.cookie ='name=ci;expires='+oDate;

Cookie增删改查

如果没有设置expires 如下,session会话会在浏览器关闭的时候就结束

Cookie增删改查
可以通过以下方法设置cookie的存储路径

document.cookie = 'scholar=vita:expires='+oDate+';path="/"';//设置存储路径
存在的路径不相同就会有多个cookie;

子域可以获得主域的,主域不能获得子域的
例如在

    document.cookie = 'scholar=vita:expires='+oDate+';path="/"';
    document.cookie = 'scholar=vita:expires='+oDate+';path="/web"';
    在/web下使用控制台能看到有 两个路径下的vita ; 但是在localhost下面 也就是直接/下面的不能看到/web的cookie 

cookie 增、删除改查

Cookie增删改查

document.cookie = 'scholar=vita:expires='+oDate+';path="/"';
    document.cookie = 'scholar=apple:expires='+oDate+';path="/web"';//直接在 name = value修改value

下面的代码是增删查操作

    var cookieset = {
        addCookie: function(name,value,time){//增
            document.cookie = name +'= '+value+';max-age='+time;
            return this;
        },
        deleteCookie: function(name){//删
            return this.addCookie(name,' ',-1);//删除数据就把值置为空
        },
        getCookie: function(name,callback){//获取
            var  cookieArr = document.cookie.split('; ');//首先把字符串改为数组
            console.log(cookieArr);
            // cookieArr = cookieArr.split('=');
            // console.log(cookieArr);
            for(var i = 0; i < cookieArr.length; i++){//不使用forEach()是因为只要找到就可以停止查找
                var itemCookieArr = cookieArr[i].split('=');
                console.log(itemCookieArr);
                if(itemCookieArr[0] ==name){
                    callback(itemCookieArr[1]);
                    return this;//如果找到在这里就返回了
                }
            }
            callback(undefined);//如果找不到,就返回undefined
            return this;
        }
    }       
    cookieset
        .addCookie('color','orange',10000)//1万秒后就过期
        .addCookie('student','stu',20000)
        .addCookie('fruit','apple',10000)
        .deleteCookie('student')//删除cookie只需要获取到名字就好
        .getCookie('ae',function(data){
            console.log(data);
        });

那为什么会有cookie呢?

Web应用程序时使用HTTP协议传输数据的。HTTP协议是无状态协议。能够轻松跨过防火墙。一旦数据交换完毕,客户端与服务器端的连接就会关闭,再次交换数据需要建立新的连接。这意味着服务器无法从连接上跟踪会话。

Cookie的特点:

满足同源策略:
虽然网站images.google.com 与网站www.google.com同属于Google,但是域名不一样,二者同样不能相互操作彼此的Cookie。

Cookie有个数和大小的限制,大小一般为4K。
Cookie在本地可以备更改文件,敏感的数据不要放在cookie里

相关标签: cookie