JavaScript Cookie的操作

认识cookie

什么是cookie?

  • cookie是 存储与访问者的计算机中的变量。每当同一台计算机通过浏览器请求某个页面时,就会发送这个cookie。当用户下次访问同一个页面时,服务器会先查看有没有上次留下的cookie资料,如果有就根据cookie里的资料判断访问者,发送特定的页面内容
  • 常见应用场景:自动登录,记住用户名等
  • 最初是用来着客户端和服务端进行通信使用的,所以原则上应该在服务器运行环境下进行。目前大部分浏览器可以在客户端生成和读取cookie数据

创建cookie

  • 格式:
    将document下的cookie属性值设置为如下键值对格式的字符串:name=value

  • 为避免特殊字符造成的错误,有时需要对数据进行编码解码
    1、使用encodeURIComponent()进行编码
    2、读取时使用decodeURIComponent()解码
    3、cookie值不能含有分号,逗号和空白符

cookie的可选参数

  • expires=时间:过期时间
    1、默认值为浏览器关闭后过期(即会话结束后)
    2、将expires设置为过去的时间可以删除cookie

  • path
    它指定了与cookie关联在一起的网页。默认值是在和当前网页统一目录的网页中有效。如果把path设置为“/”,那么它对该网站所有网页可见

  • domain
    设定cookie的有效域名,一般使用默认值,即绑定当前域名,本地测试无效

  • secure
    指定了网络上如何传输cookie,默认为普通http协议传输;若设置为安全的,将只能通过https安全协议才可以传输

封装cookie的操作函数

创建cookie数据的函数封装

    <script>
        // 普通方法创建cookie,如果多条的话比较繁琐
        // document.cookie = "name=OliGit";
        // document.cookie = "age=22";
        
        //封装创建cookie的函数1
        // function setCookie(name, value, expires){
        //     var date = new Date();
        //         date.setDate(date.getDate() + expires);
        //     document.cookie = name + "=" + value + ";expires=" + date;
        // }
        // setCookie("name3", "dasheng3");
        // setCookie("name2", "DaSheng2", 10);


        //封装创建cookie的函数2
        function setCookie(name, value, expires){
            document.cookie = encodeURIComponent(name) + "=" + encodeURIComponent(value) +
             ";expires=" + cookieDate(expires);
        }
        function cookieDate(expires){
            var date = new Date();
                date.setDate(date.getDate() + expires);
                return date;
        }
        // alert(cookieDate(10));
        setCookie("name4", "heiha", 10);
    </script>

读取cookie数据的函数封装

split()方法用于把一个字符串分割成字符串数据

//读取cookie的数据封装
        // split()方法用于把一个字符串分割成字符串数组
        // var str = "name=aaa;name2=bbb;name3=ccc;"
        // var arrStr = str.split(";");
        // alert(arrStr);//name=aaa,name2=bbb,name3=ccc,

        function getCookie(name){
            // 对cookie字符串进行键值对分割
            var cookieArr = document.cookie.split('; ');
            // alert(cookieArr);
            for (var i = 0; i < cookieArr.length; i++){
                //对cookie的键值对进行名称与值分割
                var cookieStr = cookieArr[i].split('=');
                // alert("名称:" + cookieStr[0] + "\n值:" + cookieStr[1]); 

                if(decodeURIComponent(cookieStr[0]) == name){
                    return decodeURIComponent(cookieStr[1]);
                }
            }
            return "";
        }
        setCookie("级别", "超级会员");
        alert(getCookie("name2"));
        alert(getCookie("age"));
        alert(getCookie("级别"));

删除cookie的函数封装

通过设置cookie的有效期删除

//删除cookie
        function removeCookie(key){
            // 通过设置cookie的有效期删除
            setCookie(key, "随意值", -1);
        }
        alert(document.cookie);
        removeCookie("name111");
        alert(document.cookie);

cookie的限制

  • 数量(20-50,不同浏览器有差异),大小有限(4K)
  • 有些数据不适合使用cookie保存,比如银行卡号等重要的信息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值