cookie和session会话跟踪技术

简介

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。

cookie

1.最大存储4kb,每个域名最多存储50条
2.可以设置过期时间
cookie是键值对,key和value都可以自定义


cookie不设置过期,会话关闭时就会结束。cookie一个键只能存储一个值,再去赋值就会顶替。当cookie过期浏览器就会删除cookie,想要删除cookie可以设置负的天数
火狐支持本地加载cookie,google只支持服务器加载cookie


path:可以设置访问路径,也可以限制cookie访问路径。当cookie不设置路径的时候,cookie路径默认为当前访问路径。cookie设置的路径和访问路径不同的时候,cookie不能访问。cookie访问和设置的路径相同才能访问。
文件设置cookie,可以不访问。cookie访问的文件必须和存储cookie的路径一致才能访问cookie成功


domain:限制访问域名——用来设置域名,如果不设置域名,默认服务器域名。如果设置域名后,cookie设置的域名和加载的域名必须一致,才能设置cookie成功


secure:限制协议——用来设置访问协议,如果不设置,默认http或https都可以加载文件设置cookie。设置secure后只能通过https协议加载设置cookie。
https需要正规证书认证


document.cookie='username=xxx';	//设置cookie
alert(document.cookie);//输出cookie

解决存储中文时中文乱码
document.cookie='username='+encodeURIComponent("钢铁侠");//编码
alert(decodeURIComponent(document.cookie));//解码

//设置cookie期限
 document.cookie='username=xxx;expires='+afterOfDay(7);
//设置cookie过期,过期后自动删除
document.cookie='username=;expires='+afterOfDay(-1);
document.cookie='username=;expires='+ new Date(0);
new Date(0)//计算机初始时间  1970年

//设置cookie路径path(如果不设置路径,默认是加载页面的路径)
document.cookie='user=xxx;path='+'/demo';

//设置cookie域名
document.cookie='user=xx;domain='+'local';

//设置访问协议 http/https
document.cookie='user=xx;secure';

封装cookie方法

    //根据传入参数个数判断方法
        function $cook(name){
            switch(arguments.length){
                case 1:
                    return getCookie(name);
                    break;
                case 2:
                    if(arguments[1]==null){
                        rmCook(name);
                    }else{
                        setCookie(name,arguments[1],{});
                    }
                    break;
                default:
                setCookie(name,arguments[1],arguments[2]);
                    break;
            }
        }

                //设置cookie
                function setCookie(name, value, { expires, path, domain, secure }) {
            var cookStr = encodeURIComponent(name) + '=' + encodeURIComponent(value);
            if (expires) {
                cookStr += ';expires=' + afterOfDay(expires);
            }
            if (path) {
                cookStr += ';path=' + path;
            }
            if (domain) {
                cookStr += ';domain=' + domain;
            }
            if (secure) {
                cookStr += ';secure';
            }

            document.cookie = cookStr;
        }
        //获取cookie的值
        function getCookie(name) {
            var cookStr = decodeURIComponent(document.cookie);

            //检索字符串
            var start = cookStr.indexOf(name + '=');// 获取开始下标
            if (start == -1) {
                return null;
            } else {
                var end = cookStr.indexOf(";", start);
                if (end == -1) {
                    end=cookStr.length;
                }
            }
            var str=cookStr.substring(start,end);
            alert(str);
        }

        //删除cookie,利用日期过期删除cookie
        function rmCook(name){
            document.cookie=encodeURIComponent(name)+'=;expires='+new Date(0);
        }
        //几天后的时间
        function afterOfDay(n) {
            var d = new Date();
            var day = d.getDate();
            d.setDate(n + day);
            return d;
        }
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值