jquery.cookie的path坑

在使用jquery.cookie设置cookie的时候,通常都是直接设置,没有针对path,domain和expires等进行具体的设置,这会导致,同一个cookie的key对应多个value。

1、Cookie相关概念介绍

Path – 路径

指定与cookie关联的WEB页。值可以是一个目录,或者是一个路径。

如果http://www.china.com/test/index.html 建立了一个cookie,那么在http://www.china.com/test/目录里的所有页面,以及该目录下面任何子目录里的页面都可以访问这个cookie。这就是说,在http://www.china.com/test/test2/test3 里的任何页面都可以访问http://www.china.com/test/index.html建立的cookie。

但是,如果http://www.china.com/test/ 需要访问http://www.china.com/test/index.html设置的cookes,该怎么办?这时,我们要把cookies的path属性设置成“/”。在指定路径的时候,凡是来自同一服务器,URL里有相同路径的所有WEB页面都可以共享cookies。

Domain – 域

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

Secure – 安全

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

Expires – 过期时间

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

2、实战jQuery.cookie

创建 cookie:

$.cookie('name', 'value');

创建有过期时间的cookie, 7 天之后过去:

$.cookie('name', 'value', { expires: 7 });

创建 有过期时间的cookie, 整个网站都可以用:

$.cookie('name', 'value', { expires: 7, path: '/' });

 

【项目地址】https://github.com/carhartl/jquery-cookie

posted @ 2017-09-13 17:17  js-coder  阅读(3709)  评论(0编辑  收藏  举报