用户中心设置全局tokenJavaScript

[JavaScript] cookie操作

2016-03-05  本文已影响102人  何幻

(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路径下的页面访问。
浏览器会将domainpath都相同的cookie保存在一个文件里。

上一篇下一篇

猜你喜欢

热点阅读