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;

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


可以通过以下方法设置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 

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里

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值