(1)讀取cookie
讀取document.cookie會(huì)讀取到所有的cookie,
格式為:key1=value1; key2=value2; ...keyn=valuen
注:
<u></u>a=1&b=2,是一條cookie,名字為a。
(2)設(shè)置cookie
對(duì)document.cookie的寫(xiě)操作,會(huì)設(shè)置某個(gè)名字的cookie屬性。
但是,并不會(huì)覆蓋其他已有的cookie。
例如:
document.cookie='id=1';
只會(huì)設(shè)置名字為name的cookie,并不影響其他cookie。
注:
一次不能同時(shí)對(duì)多條cookie操作。
document.cookie='a=1; b=2';
結(jié)果是只改了a的值。
(3)刪除cookie
無(wú)法直接刪除cookie,可以設(shè)置同名cookie的過(guò)期時(shí)間來(lái)刪除它。
例如:
//獲取當(dāng)前時(shí)間
var date=new Date();
//將date設(shè)置為過(guò)去的時(shí)間
date.setMilliseconds(date.getMilliseconds() + (-1) * 864e+5);
//將userId這個(gè)cookie刪除
document.cookie="id=1; expires="+date.toUTCString();
(4)把cookie保存到文件(指定expires)
為document.cookie賦值,會(huì)設(shè)置一個(gè)單會(huì)話cookie,
瀏覽器關(guān)閉后,這個(gè)cookie將消失。
這時(shí)候,cookie僅保存在內(nèi)存中,沒(méi)有保存到文件。
如果要長(zhǎng)期保存到文件,可以設(shè)置cookie的過(guò)期時(shí)間expires。
//獲取當(dāng)前時(shí)間
var date=new Date();
//將date設(shè)置為10天以后的時(shí)間
var expireDays=10;
date.setMilliseconds(date.getMilliseconds() + expireDays * 864e+5);
//將userId和userName兩個(gè)cookie設(shè)置為10天后過(guò)期
document.cookie="id=1; expires="+date.toUTCString();
注:
本地html文件,無(wú)法設(shè)置cookie
(5)指定主機(jī)名
<u></u>domain表示的是cookie所在的域,默認(rèn)為請(qǐng)求的地址,
如網(wǎng)址為www.google.com/test/test.aspx,那么domain默認(rèn)為www.google.com。
而跨域訪問(wèn),
如域A為t1.google.com,域B為t2.google.com。
那么在域A生產(chǎn)一個(gè)令域A和域B都能訪問(wèn)的cookie,
就要將該cookie的domain設(shè)置為.google.com。
如果要在域A生產(chǎn)一個(gè)令域A不能訪問(wèn)而域B能訪問(wèn)的cookie,
就要將該cookie的domain設(shè)置為t2.google.com
可以通過(guò)domain參數(shù)來(lái)實(shí)現(xiàn)對(duì)其的控制,
其語(yǔ)法格式為:
document.cookie="name=value; domain=cookieDomain";
(6)指定path
<u></u>path表示cookie所在的目錄,
asp.net默認(rèn)為/,就是根目錄。
在同一個(gè)服務(wù)器上有目錄如下:/test/,/test/cd/,/test/dd/,
現(xiàn)設(shè)一個(gè)cookie1的path為/test/,cookie2的path為/test/cd/,
那么test下的所有頁(yè)面都可以訪問(wèn)到cookie1,
而/test/和/test/dd/的子頁(yè)面不能訪問(wèn)cookie2。
這是因?yàn)閏ookie只能讓其path路徑下的頁(yè)面訪問(wèn)。
瀏覽器會(huì)將domain和path都相同的cookie保存在一個(gè)文件里。