javascript-cookie字符串说明


    一个完整的cookie需要6个子串:name(名字),value(),expires(过期时间),path(路径),domain()secure(安全性),其中后4个子串是可选的.下面逐一介绍这6个子串的设置.

 

1.namevalue

    name用来引用该cookie,value则是该cookie所保存的信息.name/value对是必须设置的.例如:

 document.cookie = 'UserName=Paul';

    cookie的值是一个简单的字符串,如果要保存的是数值类型的数据,也必须按字符串形式保存在cookie.除非对这些特殊字符进行了特定的编码,否则在将字符串保存在cookie中时,某些字符如分号(;),不能包含在值字符串中,这是因为在cookie字符串将分号作为不同部分的分隔符.

 

2.expires(过期时间)

    cookie只具有有限的生命期,,如果没有设置一个cookie的过期时间,则当用户关闭浏览器后,cookie就会过期.当用户再次打开浏览器时,cookie就已经不存在了.这种生存期为浏览器会话期的cookie被称为会话cookie.用户会话(usersession)指的是某用户单次访问网站的持续时间.如果使cookie存在更长的时间,就要给cookie设置一个过期时间,如下所示:

var date=new Date();
date.setDate((date.getDate()+7));
document.cookie ='UserName='+'P'+';expires='+date;

     上段代码使该cookie的过期时间为当前时间(cookie创建时间)之后的7.其他一些因素可能导致cookie在过期时间之前就失效,例如当用户手动删除cookie,或者cookie的数量达到浏览器所能支持的cookie数量的上限.

(注意:过期时间的格式是分成重要的,特别对于IE浏览器来说.cookie的过期时间格式必须与toGMTString()方法所返回的日期时间格式完全相同.实际使用中我们通常会采用以上的方法,先使用Date对象获取时间,然后在赋给过期时间)

 

3.path(路径)

       web服务器将整个网站合理的划分为不同的目录,而不是整个网站的所有文件统一放在一个目录之中.这与cookie有什么关系呢?cookie不仅仅是特定于某个域,还特定于该域中的具体路径.例如,位于www.xufengzhu.com/a/目录下的页面创建一个cookie,那么只有在该目录中的界面,或者在该目录的子目录中的页面才允许访问或修改这个cookie.位于www.xufengzhu.com/b/目录下的页面则不能访问.这大大提高了站点的安全性.如下例子所示:

var path = '/E:/JS/demo';
document.cookie = 'user='+ encodeURIComponent('徐凤竹') + '; path=' + path;

     但是,如果我们想从两个不同的路径来访问某一cookie,那该怎么办?很简单,cookiepath设置为父目录的路径,根据上面的逻辑,我们就可以实现啦.

      值得注意的是,尽管windows系统对于目录名并不区分大小写,但是其他的操作系统则可能对目录名区分字母的大小写.例如,如果网站运行于基于UnixLinux系统的服务器上,path标记就区分大小写.

 

4.domain()

       默认情况下,cookie仅对设置该cookie的页面所在的域有效.例如,在某个web服务器上运行着两个站点,一个是域名为a.book.com的站点,一个是域名为b.book.com的站点.一个站点上设置cookie,另一个是不能访问的.大多数情况下这正是我们想要的,但是特殊情况下就不同了.这个时候我们可以使用domain子串来设置一个域名,使得该域名及其所有的子域都可以访问该cookie.如下代码,创建一个cookie, book.com域及其所有子域都可以访问该cookie.

document.cookie= 'user=' + encodeURIComponent('徐凤竹') + '; domain= book.com';

注意:只有book.com域及其所有子域可以访问该cookie,其他域不可以.

 

5.secure(安全性)

       secure是一个布尔值,它指定了如何在网络上传输cookie的值.默认情况下,cookie将忽略安全

性问题,总是通过一个普通的http连接来传输.但是如果将cookie的安全性标记设置为true,则该cookie将仅在浏览器和服务器通过SSL(Secure Sockets Layer , 安全套接字层)安全协议连接时才被传输.

智能推荐

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号  

赞助商广告