认识cookie

  1. cookie的缺点
  2. cookie的构成
  3. JavaScript实现cookie

cookie的缺点
1)每个域的cookie总数是有限的
IE6及其更低的版本,每个域名最多20个cookie;
IE7,每个域名最多50个cookie;
Firefox,每个域名最多50个cookie;
Opera,每个域名最多30个cookie;
Safari和Chrome对cookie的数量限制没有硬性规定。

当超过每个域名的cookie数量限制,但是还想在设置cookie时,浏览器会清除以前设置的cookie

2)浏览器会限制cookie的尺寸,最好将整个cookie的长度限制在4095B以内

cookie的构成
名称:一个唯一确定cookie的名称;
值:存cookie中的字符串值;
失效时间:一个GMT格式的时间,表示cookie何时应该被删除
路径:这个路径应该向服务器发送cookie
域:cookie对于哪个域是有效的
安全标志:cookie只有在采用加密的HTTPS协议建立通信连接时,才会发送到服务器。

JavaScript实现cookie
在读取cookie是,document.cookie返回当前页面可用的所有cookie的字符串(所有名字和值经过encodeURIComponent()编码,相应的也要采取decodeURIComponent()),用分号隔开;
在设置cookie时,name=value; expires=time; path=_path
l诸如上述的格式,中间用分号和空格隔开,末尾不加分号

采用JavaScript实现cookie的读取、写入和删除的操作如下:

var cookieUtil={
    get:function(name){
        var cookiename=encodeURIComponent(name)+"=";
        var cookiestart=document.cookie.indexOf(cookiename);
        var cookievalue=null;
    //如果找到了cookiename
        if(cookiestart>-1){
            var cookieend=document.cookie.indexOf(";",cookiestart);
            if(cookieend==-1){
                var cookieend=document.cookie.length;
            }
            cookievalue=decodeURIComponent(document.cookie.substring(cookiestart+cookiename.length,cookieend));
        }
        return cookievalue;
    }
    //cookie的写入
    set:function(name,value,expires,path,domain,secure){
        //首先name与value是必须的
        var cookietext=encodeURIComponent(name)+"="+encodeURIComponent(value);
        if(expires instanceof Date){
            cookietext+="; expires="+expires.toGMTString();
        }
        if(path){
            cookietext+="; path="+path;
        }
        if(domain){
            cookietext+="; domain="+domain;
        }
        if(srcure){
            cookietext+="; secure";
        }
        return cookietext;
    }

    //cookie的删除操作(利用相同的域名,路径,安全选项重新设置cookie,并且将失效的时间设置为过去的时间
    unset:function(name,expires,path,domain,secure){
        this.set(name,"",new Date(0),path,domain,secure);
    }
}

基本思路:
读取方法:先查找document.cookie字符串中是否能找到经过URL编码后的待读取cookie名的位置;
如果找到,根据该cookie名之后是否能找到分号确定出该cookie的结束的位置;
进行解码,返回cookie对应的值;

写入方法:
首先:name和value是必须的,且应该经过URL编码;
然后:按照分号,空格,名值对的形式将该cookie追加到字符串后

删除方法:
利用相同的域名,路径,安全选项重新设置cookie,并且将失效的时间设置为过去的时间

JavaScript高级程序设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值