JS中的cookie的使用

JavaScript是運(yùn)行在客戶端的腳本,一般是不能夠直接設(shè)置Session的,因?yàn)镾ession是運(yùn)行在服務(wù)器端的。而cookie是運(yùn)行在客戶端的,所以可以用JS來(lái)設(shè)置cookie.

cookie是以鍵值對(duì)的形式保存的,多個(gè)cookie之間用‘ ; ’分隔開(kāi);

假如在A頁(yè)面中要保存username 的值(“xiaomi”)到cookie 中,key的值是name,則代碼如下:

document.cookie=“name=” + username;

JS讀取cookie:

假設(shè)cookie中存儲(chǔ)的內(nèi)容為:name=jack;password=123

則在B頁(yè)面中獲取變量username的值的JS代碼如下:

var username=document.cookie.split(";")[0].split("=")[1]; 注1

注:split 是將字符串分割成字符串?dāng)?shù)組

stringObject.split(separator,how many)

第一個(gè)參數(shù)是必需的? 可以是字符串或正則表達(dá)式,從該參數(shù)指定的地方分割 stringObject。

第二個(gè)參數(shù)是 可選的? 數(shù)組可以分割的最大長(zhǎng)度? 省略表示整個(gè)字符串都會(huì)被分割,不考慮長(zhǎng)度


//JS操作cookies方法!

//寫(xiě)cookies

function setCookie(name,value)

{

var Days = 30;

var exp = new Date();

exp.setTime(exp.getTime() + Days*24*60*60*1000);

document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();

}

注:

escape (value) 返回一個(gè)包含了 charstring 內(nèi)容的字符串值( Unicode 格式)

toGMTString() 方法可根據(jù)格林威治時(shí)間 (GMT) 把 Date 對(duì)象轉(zhuǎn)換為字符串,并返回結(jié)果。

expires 屬性見(jiàn)下面

//獲取cookie

function getCookie(name)

{

var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");

if(arr=document.cookie.match(reg))

return unescape(arr[2]);

else

return null;

}

//刪除cookie

function delCookie(name)

{

var exp = new Date();

exp.setTime(exp.getTime() - 1);

var cval=getCookie(name);

if(cval!=null)

document.cookie= name + "="+cval+";expires="+exp.toGMTString();

}

//使用示例

setCookie("name","hayden");

alert(getCookie("name"));

alert(delCookie("name"));


//如果需要設(shè)定自定義過(guò)期時(shí)間

//那么把上面的setCookie 函數(shù)換成下面兩個(gè)函數(shù)就ok;

//程序代碼

function setCookie(name,value,time)

{

var strsec = getsec(time);

var exp = new Date();

exp.setTime(exp.getTime() + strsec*1);

document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();

}

function getsec(str)

{

alert(str);

var str1=str.substring(1,str.length)*1;

var str2=str.substring(0,1);

if (str2=="s")

{

return str1*1000;

}

else if (str2=="h")

{

return str1*60*60*1000;

}

else if (str2=="d")

{

return str1*24*60*60*1000;

}

}

//這是有設(shè)定過(guò)期時(shí)間的使用示例:

//s20是代表20秒

//h是指小時(shí),如12小時(shí)則是:h12

//d是天數(shù),30天則:d30

setCookie("name","hayden","s20");

?


expires屬性:

指定了cookie的生存期,默認(rèn)情況下cookie 是暫時(shí)存在的,他們存在的值只在瀏覽器會(huì)話期間存在,當(dāng)用戶退出瀏覽器后這些值也會(huì)丟失,如果想讓cookie 存在一段時(shí)間,就要為expires 屬性設(shè)置一個(gè)未來(lái)的一個(gè)過(guò)期日期,現(xiàn)在已經(jīng)被max-age 屬性取代,max-age用秒來(lái)設(shè)置cookie的生存期;

path屬性

它指定與cookie關(guān)聯(lián)在一起的網(wǎng)頁(yè),在默認(rèn)情況下cookie 會(huì)與創(chuàng)建他的網(wǎng)頁(yè),該網(wǎng)頁(yè)處于同一個(gè)目錄下的網(wǎng)頁(yè)以及與這個(gè)網(wǎng)頁(yè)所在的目錄下的子目錄下的網(wǎng)頁(yè)關(guān)聯(lián);

domain屬性:

domain屬性可以使多個(gè)web服務(wù)器共享cookie domain屬性的默認(rèn)值是創(chuàng)建cookie的網(wǎng)頁(yè)所在的服務(wù)器的主機(jī)名 不能將一個(gè)cookie的域設(shè)置成服務(wù)器所在的域之外的域;

例如讓位于order.example.com的服務(wù)器能夠讀取catalog.example.com設(shè)置的cookie值。如果catalog.example.com的頁(yè)面創(chuàng)建的cookie把自己的path屬性設(shè)置為“/”,把domain屬性設(shè)置成“.example.com”,那么所有位于catalog.example.com的網(wǎng)頁(yè)和所有位于orlders.example.com的網(wǎng)頁(yè),以及位于example.com域的其他服務(wù)器上的網(wǎng)頁(yè)都可以訪問(wèn)這個(gè)coolie。

secure屬性

他是一個(gè)布爾值 之低昂在網(wǎng)絡(luò)上傳輸cookie 默認(rèn)是不安全的,通過(guò)一個(gè)普通的http連接傳輸;

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容