js 放置 cookie、获取 cookie、删除 cookie

这块TM的删不掉

 

代码如下:

// 自定义  js cookies
var mycookie = {
        
    // 放置
    set : function(name,value){
        var Days = 1; //此 cookie 将被保存 Days 天
        var exp  = new Date();    //new Date("December 31, 9998");
        exp.setTime(exp.getTime() + Days*24*60*60*1000);
        document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
    },
    
    //获取
    get : function(name){
         var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
         if(arr != null) return unescape(arr[2]); return null;
    },
    
    //删除
    del : function(name){
        var exp = new Date();
        exp.setTime(exp.getTime() - 1);
        var cval=mycookie.get(name);
        if(cval!=null) document.cookie= name + "="+";expires="+exp.toGMTString();
    }
}

 

如果小伙伴们在实际项目中,发现 cookie 删除不了。这是怎么回事呢? 那就需要看看下面这些东西啦。

cookie 的一些属性:

1. domain:cookie 所在的域,默认为请求地址。如网址 www.baidu.com/test/index,那么 domain 默认为 www.baidu.com。而跨域访问呢,比如域A为 www.baidu.com,域B为 www.goodle.com。那么就需要将 domain 设置为 .com。如果想要产生一个域A 不能访问,而域B 可以访问的,domain 设置为 www.goodle.com。

2. path:cookie 所在的目录,默认为'/',就是根目录。在同一个服务器上有目录如下:/test/,/test/cd/,/test/dd/,现设一个 cookie1 的 path 为 /test/,cookie2 的 path 为 /test/cd/,那么 test 下的所有页面都可以访问到 cookie1,而 /test/ 和 /test/dd/ 的子页面不能访问 cookie2。这是因为 cookie 能让其 path 路径下的页面访问。

3. 浏览器会将 domain 和 path 都相同的 cookie 保存在一个文件里,cookie 间用 * 隔开。

4. 含值键值对的cookie:以前一直用的是 nam=value 单键值对的 cookie,一说到含多个子键值对的就蒙了。现在总算弄清楚了。含多个子键值对的 cookie 格式是name=key1=value1&key2=value2。可以理解为单键值对的值保存一个自定义的多键值字符串,其中的键值对分割符为 &,当然可以自定义一个分隔符,但默认是以 & 为分割符。

 

posted @ 2016-04-19 18:59  宁采桃花不采臣  阅读(982)  评论(0编辑  收藏  举报