怎么设置cookie,怎么设置cookie以及删除cookie和cookie详解

在操做cookie以前,先来看一下cookie长什么样。

能够看到,cookie是一个个键值对(“键=值”的形式)加上分号空格隔开组合而成, 形如: "name1=value1; name2=value2; name3=value3"



设置cookie:
复制代码
 1 /**
 2      * 设置cookie
 3      * @param name cookie的名称
 4      * @param value cookie的值
 5      * @param day cookie的过时时间
 6      */
 7     var setCookie = function (name, value, day) {
 8       if(day !== 0){     //当设置的时间等于0时,不设置expires属性,cookie在浏览器关闭后删除
 9         var expires = day * 24 * 60 * 60 * 1000;
10         var date = new Date(+new Date()+expires);
11         document.cookie = name + "=" + escape(value) + ";expires=" + date.toUTCString();
12       }else{
13         document.cookie = name + "=" + escape(value);
14       }
15     };
复制代码
 

注意:expires使用GMT或UTC格式的时间, 我这里没有指定路径(path)和域(domain),  当没有指定路径时默认为当前路径下,如对 于“https://home.cnblogs.com/u/maderlzp/”下设置的cookie,其path为"/u/maderlzp", 其domain为当前域名“home.cnblogs.com”。javascript

为何有时候删除不了cookie? 多是由于删除cookie时没有指定该cookie的path和domain,致使找不到这个cookie来设置过时时间而没法删除。html



获取cookie:
/**
     * 获取对应名称的cookie
     * @param name cookie的名称
     * @returns {null} 不存在时,返回null
     */
    var getCookie = function (name) {
      var arr;
      var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
      if (arr = document.cookie.match(reg))
        return unescape(arr[2]);
      else
        return null;
    };

  

 
 
 
cookie获取正则解析:
"(^| )" + name + "=([^;]*)(;|$)"  (^| )匹配cookie开头或空格(cookie键值对之间用分号空格隔开),也就是cookie键值对的开始。接着是cookie的名称name,([^;]*)匹配除分号之外的任意字符,也就是cookie键值对的值。最后(;|$)匹配分号或整个cookie的结尾,也就是cooke键值对的结尾。

更多正则的语法详解请参考:

   正则表达式的用法和经常使用实例【1】




删除cookie:

 

复制代码
1 /**
2      * 删除cookie
3      * @param name cookie的名称
4      */
5     var delCookie = function (name) {
6       setCookie(name, ' ', -1);
7     };
复制代码

设置要删除的cookie的expires为过去的时间便可java

 

 

修改cookie:正则表达式

使用上面设置cookie的方法,从新给要修改的cookie赋值就行,这样旧的就会被覆盖掉浏览器

 

 

cookie的主要做用:

cookie

Cookie主要用在如下三个方面:dom

  • 会话状态管理(如用户登陆状态、购物车、游戏分数和其它须要记录的信息)
  • 个性化设置(如用户自定义设置、主题等)
  • 浏览器行为跟踪(如跟踪分析用户行为)

 

 

cookie设置语法:post

 

document.cookie = "cookieName=mader; expires=Fri, 31 Dec 2017 15:59:59 GMT; path=/mydir; domain=cnblogs.com; max-age=3600; secure=true";加密

  •  cookieName=mader :name=value,cookie的名称和值
  •  expires=Fri, 31 Dec 2017 15:59:59 GMT: expires,cookie过时的日期,若是没有定义,cookie会在对话结束时过时。日期格式为 new Date().toUTCString()
  •  path=/mydir: path=path (例如 '/', '/mydir') 若是没有定义,默认为当前文档位置的路径。
  •  domain=cnblogs.com: 指定域(例如 'example.com', '.example.com' (包括全部子域名), 'subdomain.example.com') 若是没有定义,默认为当前文档位置的路径的域名部分。
  •  max-age=3600: 文档被查看后cookie过时时间,单位为秒
  •  secure=true: cookie只会被https传输 ,即加密的https连接传输

 

彼岸花开开彼岸, 奈何桥前可奈何。 望乡台下忘川水, 三生石边卖孟婆。 涅槃同魔魔恋相, 浮生若梦梦蹉跎。 惟有余生舞日月, 白驹过隙大风歌。