codecamp

Cookie 的维护和生命周期

在一个 cookie 中可以指定任意数量的选项,并且这些选项可以是任意顺序,例如:

Set-Cookie:name=Nicholas; domain=nczonline.net; path=/blog

这个 cookie 有四个标识符:cookie 的 namedomainpathsecure 标记。要想改变这个 cookie 的值,需要发送另一个具有相同 cookie namedomainpath 的 Set-Cookie 消息头。例如:

Set-Cookie: name=Greg; domain=nczonline.net; path=/blog

这将覆盖原来 cookie 的值。但是,修改 cookie 选项的任意一项都将创建一个完全不同的新 cookie,例如:

Set-Cookie: name=Nicholas; domain=nczonline.net; path=/

这个消息头返回之后,会同时存在两个名为 “name” 的不同的 cookie。如果你访问 www.nczonline.net/blog 下的一个页面,以下的消息头将被包含进来:

Cookie: name=Greg; name=Nicholas

在这个消息头中存在了两个名为 “name” 的 cookie,path 值越详细则 cookie 越靠前。 按照 domain-path-secure 的顺序,设置越详细的 cookie 在字符串中越靠前。假设我在 ww.nczonline.net/blog 下用默认选项创建了另一个 cookie:

Set-Cookie: name=Mike

那么返回的消息头现在则变为:

Cookie: name=Mike; name=Greg; name=Nicholas

以 “Mike” 作为值的 cookie 使用了域名(www.nczonline.net)作为其 domain 值并且以全路径(/blog)作为其 path 值,则它较其它两个 cookie 更加详细。

secure 选项
使用失效日期
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }