设置cookie,获取cookie,删除cookie,修改cookie

    xiaoxiao2022-07-05  177

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

    在操作cookie之前,先来看一下cookie长什么样。

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

    设置cookie:

    /** * 设置cookie * @param name cookie的名称 * @param value cookie的值 * @param day cookie的过期时间 */ var setCookie = function (name, value, day) { if(day !== 0){ //当设置的时间等于0时,不设置expires属性,cookie在浏览器关闭后删除 var expires = day * 24 * 60 * 60 * 1000; var date = new Date(+new Date()+expires); document.cookie = name + "=" + escape(value) + ";expires=" + date.toUTCString(); }else{ document.cookie = name + "=" + escape(value); } };

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

    为什么有时候删除不了cookie? 可能是因为删除cookie时没有指定该cookie的path和domain,导致找不到这个cookie来设置过期时间而无法删除。

    获取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 + "=([^;]*)(;| ) " ( ∣ ) 匹 配 c o o k i e 开 头 或 空 格 ( c o o k i e 键 值 对 之 间 用 分 号 空 格 隔 开 ) , 也 就 是 c o o k i e 键 值 对 的 开 始 。 接 着 是 c o o k i e 的 名 称 n a m e , ( [ ; ] ∗ ) 匹 配 除 分 号 以 外 的 任 意 字 符 , 也 就 是 c o o k i e 键 值 对 的 值 。 最 后 ( ; ∣ )" (^| )匹配cookie开头或空格(cookie键值对之间用分号空格隔开),也就是cookie键值对的开始。接着是cookie的名称name,([^;]*)匹配除分号以外的任意字符,也就是cookie键值对的值。最后(;| )"()cookiecookiecookiecookiename[;]cookie(;)匹配分号或整个cookie的结尾,也就是cooke键值对的结尾。 更多正则的语法详解请参考: 正则表达式的用法和常用实例【1】

    删除cookie:

    /** * 删除cookie * @param name cookie的名称 */ var delCookie = function (name) { setCookie(name, ' ', -1); };

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

    修改cookie:

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

    cookie的主要作用:

    Cookie主要用在以下三个方面:

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

    cookie设置语法:

    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链接传输

    原文链接

    最新回复(0)