(1)读取cookie
读取document.cookie
会读取到所有的cookie,
格式为:key1=value1; key2=value2; ...keyn=valuen
注:
<u></u>a=1&b=2
,是一条cookie,名字为a
。
(2)设置cookie
对document.cookie
的写操作,会设置某个名字的cookie属性。
但是,并不会覆盖其他已有的cookie。
例如:
document.cookie='id=1';
只会设置名字为name
的cookie,并不影响其他cookie。
注:
一次不能同时对多条cookie操作。
document.cookie='a=1; b=2';
结果是只改了a
的值。
(3)删除cookie
无法直接删除cookie,可以设置同名cookie的过期时间来删除它。
例如:
//获取当前时间
var date=new Date();
//将date设置为过去的时间
date.setMilliseconds(date.getMilliseconds() + (-1) * 864e+5);
//将userId这个cookie删除
document.cookie="id=1; expires="+date.toUTCString();
(4)把cookie保存到文件(指定expires
)
为document.cookie
赋值,会设置一个单会话cookie,
浏览器关闭后,这个cookie将消失。
这时候,cookie仅保存在内存中,没有保存到文件。
如果要长期保存到文件,可以设置cookie的过期时间expires。
//获取当前时间
var date=new Date();
//将date设置为10天以后的时间
var expireDays=10;
date.setMilliseconds(date.getMilliseconds() + expireDays * 864e+5);
//将userId和userName两个cookie设置为10天后过期
document.cookie="id=1; expires="+date.toUTCString();
注:
本地html文件,无法设置cookie
(5)指定主机名
<u></u>domain
表示的是cookie所在的域,默认为请求的地址,
如网址为www.google.com/test/test.aspx
,那么domain
默认为www.google.com
。
而跨域访问,
如域A为t1.google.com
,域B为t2.google.com
。
那么在域A生产一个令域A和域B都能访问的cookie,
就要将该cookie的domain
设置为.google.com。
如果要在域A生产一个令域A不能访问而域B能访问的cookie,
就要将该cookie的domain
设置为t2.google.com
可以通过domain
参数来实现对其的控制,
其语法格式为:
document.cookie="name=value; domain=cookieDomain";
(6)指定path
<u></u>path
表示cookie所在的目录,
asp.net默认为/
,就是根目录。
在同一个服务器上有目录如下:/test/
,/test/cd/
,/test/dd/
,
现设一个cookie1的path
为/test/
,cookie2的path
为/test/cd/
,
那么test下的所有页面都可以访问到cookie1,
而/test/
和/test/dd/
的子页面不能访问cookie2。
这是因为cookie只能让其path路径下的页面访问。
浏览器会将domain
和path
都相同的cookie保存在一个文件里。