一起来了解cookie呀!!!♥♥♥♥♥♥

cookie cookie cookie

1.什么是cookie
cookie是由服务器发送给客户端,也就是浏览器的信息(小量的)
2.用来干什么
cookie是键值对形式存储的少量信息,帮助我们跟踪会话,一般该信息记录用户身份。cookie也常常用来记录购物车的商品信息,例如:数量 ,记录用户访问次数等等。
3.原理是什么
当客服端请求服务器时,如果服务器需要记录此用户的状态,就会使用response向客户端浏览器颁发一个cookie。此时,客户端浏览器就会把cookie保存起来,当浏览器请求服务器时,浏览器就会把请求的网址和cookie一起提交给服务器,服务器通过检查cookie来获取用户的状态。

cookie 的特点

    1. 按照域名存储
      + 你在哪一个域名下存储的内容, 就在哪一个域名下使用
      + 其他域名都用不了
      + 和资源路径地址没有关系
    2. 存储大小有限制
      + 4KB 左右
      + 50 条左右
      + 或者的关系
    3. 时效性
      + 默认是会话级别的时效性(关闭浏览器就没有了)
      + 可以手动设置, 七天后, 两个小时以后
    4. 请求自动携带
      + 当你的 cookie 空间里面有内容的时候
      + 只要是当前域名下的任意一个请求, 都会自动携带 cookie 放在请求头里面
        => cookie 里面有多少自动携带多少
      + 如果 cookie 空间中没有内容, 就不会携带了
    5. 前后端操作
      + 前端可以通过 js 操作 cookie 空间进行增删改查
      + 后端也可以通过任何后端语言进行 cookie 空间的增删改查

cookie的添加
当我们获取客户端的cookie时,只能获取maxAge与value属性,其他属性都不会被提交。

Cookie cookie=new Cookie("username","Tom");//新建一个Cookie对象
cookie.setMaxAge(24*60*60);//设置 过期时间为一天 单位为秒
response.addCookie(cookie);//保存cookie到客户端

cookie的删除
当我们删除某个cookie时,只需要新建一个只有name和value不一样的同名cookie,然后添加到response中覆盖掉之前的cookie。

Cookie cookie=new Cookie("username","Tom");//新建一个Cookie对象
cookie.setMaxAge(0);//设置 过期时间为0 表示将要删除
response.addCookie(cookie);//执行添加后就从response里删除

cookie的修改
当我们修改某个cookie时,同样只需要新建一个只有value属性不一样的同名cookie,然后添加到response中覆盖掉之前的cookie。

Cookie cookie=new Cookie("username","Tom");//新建一个Cookie对象
cookie.setMaxAge(24*60*60);//设置过期时间
response.addCookie(cookie);//执行添加后就从response里覆盖了修改

注意:我们修改和删除cookie时,新建的cookie除value ,maxAge之外的所有属性,例如name、path、domain等,都要与cookie完全一样。否则,浏览器将视为两个不同的cookie,从而导致修改或者删除失败。

JS操作cookie

由于cookie是保存在客户端的,所以浏览器可以使用脚本(JS)等来操作cookie。

封装的cookie函数

function setCookie(key,val,ops){
    ops = ops || {};
    let e = "";
    if(ops.expires){
        var d = new Date();
        d.setDate( d.getDate() + ops.expires );
        e = ";expires="+d;
    }
    let p = ops.path ? ";path="+ops.path : "";
    document.cookie = `${key}=${val}${p}${e}`;
}

function getCookie(key){
    let strC = document.cookie;
    let arrC = strC.split("; ");
    for(var i=0;i<arrC.length;i++){
        if(arrC[i].split("=")[0] === key){
            return arrC[i].split("=")[1];
        }
    }
    return "";
}

function removeCookie(key,ops){
    ops = ops || {};
    ops.expires = -1;

    setCookie(key,"qweqwezzdasd",ops);
}

安全问题:cookie中所有的内容,因为都是存在本地的文本,所以都是明文,只要能看到你的本地,就有可能看到你的cookie,所以在项目中千万不要在cookie中直接存账号密码

cookie工作场景:

    cookie自身其实对工作环境没有要求
    但是cookie会随着http发往服务器
    使用cookie的时候,是不是需要记录客户端和服务器之间的信息
    客户端是浏览器,服务器是本地服务器
    所以导致,cookie最好也在服务器环境中使用
发布了7 篇原创文章 · 获赞 11 · 访问量 229

猜你喜欢

转载自blog.csdn.net/weixin_45884493/article/details/104783469
今日推荐