cookie相关属性

今天早上要上线一个新版本: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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 JavaScript 中,我们可以使用 `document.cookie` 属性来读取和设置 cookie。当我们设置 cookie 时,可以指定以下属性: 1. `expires`:指定 cookie 的过期时间,可以是一个日期对象或一个表示从现在开始的秒数。如果不指定该属性,则 cookie 将在浏览器关闭时过期。 2. `path`:指定 cookie 的路径,默认为当前页面的路径。 3. `domain`:指定 cookie 的域名,默认为当前域名。 4. `secure`:一个布尔值,指定是否使用安全连接(HTTPS)发送 cookie。 下面是一个设置 cookie 的示例代码: ```javascript // 设置一个名为 "username" 的 cookie,值为 "john",并指定过期时间为 1 天后 document.cookie = "username=john; expires=" + new Date(Date.now() + 24 * 60 * 60 * 1000).toUTCString() + "; path=/"; // 设置一个名为 "password" 的 cookie,值为 "123",并指定路径为 "/admin" document.cookie = "password=123; path=/admin"; // 设置一个名为 "rememberMe" 的 cookie,值为 "true",并指定域名为 ".example.com" document.cookie = "rememberMe=true; domain=.example.com"; ``` 在读取 cookie 时,我们可以通过 `document.cookie` 属性获取当前页面中所有的 cookie,然后使用字符串操作方法来解析出需要的值。例如,要读取名为 "username" 的 cookie 的值,可以使用以下代码: ```javascript // 获取当前页面中所有的 cookie var cookies = document.cookie.split(";"); // 遍历所有的 cookie,找到名为 "username" 的 cookie,并获取其值 for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; while (cookie.charAt(0) == " ") { cookie = cookie.substring(1); } if (cookie.indexOf("username=") == 0) { var username = cookie.substring("username=".length, cookie.length); break; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值