浅谈cookie

阅读更多

     首先,我们要弄明白cookie是什么。例如,用户第一次访问网站时已经注册了用户名,当他再次访问时,可以用他的名字问候他,欢迎他再次访问该网站;从用途角度去看,cookie就是这个网站用于存储类似信息的文件;从JS的角度去看它就是一些存在客户端的计算机中的字符串;

     Cookie在创建时可以设置为6个部分name(名称)、value(值)、expires(过期时间)、path(路径)、domin(域)、secure(安全性);后4个是可选的,最常用的是前三个;

    在浏览器的控制台下(以chrome为例)就可以设置cookie

document.cookie = "username=Wahaha";

     上面的代码设置了一个cookie,名称为username,值为Wahaha;这样设置的cookie在用户关闭浏览器后就会过期,如果希望cookie存在的时间更长的话就要用到第三个部分expires来设置过期时间了,如下所示:

var expireDate = new Date();
expireDate.setDate(expireDate.getDate()+10);
document.cookie="username=Wahaha;expires=" "+ expireDate.toGMTString() +" ;"

   在上面的代码中,第一行获取了当前时间,第二行设置时间为10天后,第三行把过期时间写入cookie;这样就可以实现cookie较长时间的保存了。需要注意的是,不设置过期时间的cookie会暂时存在内存中,而设置了过期时间的cookie会存在硬盘中。

其他的三部分不太常用但仍需我们了解:

   cookie的用途我们已经知道,那如果没有路径的话,在同一个域中,如果两个站点都有一个MyCookie的cookie,那么设置或读取的时候就会出现问题,为了避免这种情况发生就可以用path(路径)进行一些限制。

那么,利用path(路径)通过两个不同的路径访问某一个cookie,该怎么办?

比如:有一个联机商店www.mywebsite.com/mystore;该商店还有两个子目录/Books和/Foods,在/Books和/Foods目录下设置的cookie无法互相访问但我们的cookie如果是只设置在/mystore下,无论是/Books和/Foods,还是/mystore就都可以访问了。如下:

document.cookie="username=Wahaha;expires=Tue, 20 Sep 2016 00:00:00 "+“;path=/mystore;";

 关于域,默认情况下cookie仅用于设置它的域上的页面,也就是说一个域名下设置的cookie,不能在另一个域名下访问。还有secure(安全性),这只是一个布尔值,设置为true则cookie激发送给尝试使用安全通道检索它的服务器,而设置为false则不考虑安全性。

如果你想在浏览器中查看一个页面中的cookie(以chrome为例)你只须在console控制台下输入:

console.log(document.cookie)//或用alert()都可以;

 便可查看当前页面的cookie,也可以在控制台的application按钮下的cookie文件下查看。

你可能感兴趣的:(浅谈cookie)