阅读(4891) (0)

Cookie 的维护和生命周期

2016-02-24 16:04:26 更新

在一个 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 更加详细。