cookie相关属性

来源:互联网 发布:nginx 日志格式 编辑:程序博客网 时间:2024/04/29 11:38

今天早上要上线一个新版本:http://web.sogou.com
但是在测试平台上发现历史浏览的部分竟然不能记用户在二级页面点击的网址了
我们先是查看了一下记录cookie的js 发现和以前并没有什么不同
为什么以前可以记录但是现在不能呢
后来经过检查发现 原来是由于页面目录更替引起的
由于我们使用了新的目录结构 2级页面和index不在同一级目录中
ie在生成cookie的时候是按照路径来生成的 而我们的历史浏览记录调用的cookie是域名的cookie
我们恍然大悟
于是马上搜索资料寻找解决办法
果然 原来我们忽略了cookie的path属性
后来我们把path改成域名之后 一切恢复正常了
下面就给大家介绍一下path属性以及cookie其他一些属性:

Expires – 过期时间。指cookie的生命期,确切地说是过期日期。如果想让cookie的存在期限超过当前浏览器的会话时间,就必须使用这个属性。当过了到期日期时,浏览器会自动删除cookie文件。

Path – 路径。指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。如果http://www.achome.cn/archives/index.html 建立了一个cookie,那么在http://www.achome.cn/archives/目录里的所有页面,以及该目录下面任何子目录里的页面都可以访问这个cookie。这就是说,在http://www.achome.cn/archives/stories/articles 里的任何页面都可以访问http://www.achome.cn/archives/index.html建立的cookie。但是,如果http://www.achome.cn/archives/ 需要访问http://www.achome.cn/blog/pics/index.html设置的cookes,该怎么办?这时,我们要把cookies的path属性设置成“/”。在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。

Domain – 域。指定关联的WEB服务器或域。值是域名,比如www.achome.cn。这是对path路径属性的一个延伸。如果我们想让www.achome.cn能够访问bbs.achome.cn设置的cookies,该怎么办? 我们可以把domain属性设置成“achome.cn”,并把path属性设置成“/”。

Secure – 安全。指定cookie的值通过网络如何在用户和WEB服务器之间传递。这个属性的值或者是“secure”,或者为空。缺省情况下,该属性为空,也就是使用不安全的HTTP连接传递数据。如果一个 cookie 标记为secure,那么,它与WEB服务器之间就通过HTTPS或者其它安全协议传递数据。不过,设置了secure属性不代表其他人不能看到你机器本地保存的cookie。换句话说,把cookie设置为secure,只保证cookie与WEB服务器之间的数据传输过程加密,而保存在本地的cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。

 

 

---------------------------------------- 偶素正义的分割线 ----------------------------------------

 

cookie 有路径--path,表示哪些路径下的文件有权限读取该 cookie。

path 应该以 "/" 结尾,同名 cookie,不同 path,属不同的 cookie

document.cookie = "N1=1; path=/path/";
document.cookie = "N1=2; path=/path";
document.cookie = "N1=3; path=path/";

如上代码,前两句使用的是绝对路径,即相对于站点根目录的网页目录,第三句使用的是相对路径,相对于当前目录的。

第一句和第二句在于结尾不同,虽然他们所表达的权限相同,但是由于 path 字符串不同,会形成两个同名的 cookie,容易造成混乱,我们建议不要使用第二句这种格式,因为系统默认也是以 "/" 结尾的。

所以如上述是三个 cookie,之间不会相互覆盖。

path 属性值有大小写之分,应与浏览器中的地址栏的输入一致

document.cookie = "N1=1; path=/path/";
document.cookie = "N1=2; path=/paTH/";

这是两个不同的 cookie,因为 path 属性值大小写不同,如果我们在地址栏输入的是 path,那么就读取第一个 N1,如果我们输入的是 paTH,那么就读取第二个 N1

path 不可读

同 expires 一样,path 只可写,不可读。

path 不可更改

同 expires 不一样,如果我们试图更改 path,那么实际上我们是另外写了一个 cookie,而不是更改了 path 值。

path 权限有继承性

假如指定了 /test/ 目录有权限读取某 cookie,那么 /test/ 之下的目录 /test/t/ 也有权限读取该 cookie

原创粉丝点击