JS操作cookie

来源:互联网 发布:韩国拍照软件 编辑:程序博客网 时间:2024/06/06 03:43

什么是cookie?

cookie是指Web浏览器存储的少量数据,同时它是与具体的Web页面或者站点相关的.

cookie的属性:

1.name(名字)

2.value(值)

3.expires

指定了cookie的生存期,默认情况下cookie是暂时存在的,他们存储的值只在浏览器会话期间存在,当用户退出浏览器后这些值也会丢失,如果想让 cookie存在一段时间,就要为expires属性设置为未来的一个用毫秒数表示的过期日期或时间点,expires默认为设置的expires的当前时间。现在已经被max-age属性所取代,max-age用秒来设置cookie的生存期。

4.path(路径)

它指定与cookie关联在一起的网页,默认情况下cookie会与它创建的网页,改网页处于同一目录下的网页以及这个网页下的子目录下的网页相关联.
举个栗子,如果http://www.example.com/catalog/widgets/index.html页面创建了一个cookie,并将改路径设置成”/catalog”,那么该cookie对于http://www.example.com/catalog/order.html页面都是可见的.
再举个栗子,如果把路径设置成”/”,那么该cookie对于任何http://www.example.com这台web服务器上的页面都是可见的.(来源于JavaScript权威指南)

5.domain

domain属性可以使多个web服务器共享,cookie.domain熟悉的默认值是创建cookie的网页所在的服务器主机名.不能讲一个cookie的域设置服务器所在的域之外的域.
举个栗子,order.example.com域下的服务器想要读取catalog.example.com域下设置的cookie的值.这个时候就需要通过设置cookie的domain属性来达到目的.如果catalog.example.com域下的一个页面创建了一个cookie,并将其path属性设置成’/’,其domain属性设置成”.example.com”,那么该cookie就对所有catalog.example.com,orders.example.com以及其他example.com域下的任何服务器都可见.(来源于JavaScript权威指南)

cookie的特点:

1.不同浏览器存放的cookie位置不一样,也是不能通用的.
2.cookie的存储是以域名形式进行区分的.
3.cookie的数据可以设置名字.
4.一个域名下存放的cookie的个数是有限制的,不同浏览器存放的数量不同.
5.每个cookie存放的内容大小也是有限制的,不同浏览器存放大小不一样.

如何通过JS操作cookie

条件:浏览器允许(废话).
我们通过document.cookie来获取网站下的cookie的时候,得到字符串的值,它包含当前网站下所有的cookie.它会把所有的cookie通过一个分号+空格的形式串联起来.
举个栗子,document.cookie=’name=csdn; age=18’.

JS代码

1.设置cookie

W3C的

function setCookie(c_name,value,expiredays){var exdate=new Date()exdate.setDate(exdate.getDate()+expiredays)document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString())}

个人比较喜欢这样写,简单直观

function  setCookie(key,value,days) {                document.cookie=key+'='+value+';'+'max-age='+days*24*60*60;            }

需要注意的是,document.cookie不是简单的字符串操作.
举个栗子,如果当前document.cookie的值=’name=csdn; age=18’,
然后我们执行document.cookie=’name=hello’;
document.cookie的值=’name=hello; age=18’,而不是变为document.cookie=’name=hello’,我只能理解为document.cookie不是单纯的字符串,具体是什么不知道,求解答.

2.查询cookie

W3C

function getCookie(c_name){if (document.cookie.length>0)  {  c_start=document.cookie.indexOf(c_name + "=")  if (c_start!=-1)    {     c_start=c_start + c_name.length+1     c_end=document.cookie.indexOf(";",c_start)    if (c_end==-1) c_end=document.cookie.length    return unescape(document.cookie.substring(c_start,c_end))    }   }return ""}

个人比较喜欢这样写

function getCookie(key){                var arr=document.cookie.split(';');                for(var i=0;i<arr.length;i++){                    var arr1=arr[i].split('=');                    if(arr1[0]==key)                        return arr1[1];                }                return '';            }

3.删除cookie

function delCookie(key){                setCookie(key,'',0);            }

参考文章:
http://blog.csdn.net/helloliuhai/article/details/18351439
http://www.w3school.com.cn/js/js_cookies.asp

1 0