JavaScript 中的 cookie

2018-02-24 16:04 更新

在 JavaScript 中通過(guò)?document.cookie?屬性,你可以創(chuàng)建、維護(hù)和刪除 cookie。創(chuàng)建 cookie 時(shí)該屬性等同于?Set-Cookie?消息頭,而在讀取 cookie 時(shí)則等同于?Cookie?消息頭。在創(chuàng)建一個(gè) cookie 時(shí),你需要使用和?Set-Cookie?期望格式相同的字符串:

document.cookie="name=Nicholas;domain=nczonline.net;path=/";

設(shè)置?document.cookie?屬性的值并不會(huì)刪除存儲(chǔ)在頁(yè)面中的所有 cookie。它只簡(jiǎn)單的創(chuàng)建或修改字符串中指定的 cookie。下次發(fā)送一個(gè)請(qǐng)求到服務(wù)器時(shí),通過(guò)?document.cookie?設(shè)置的 cookie 會(huì)和其它通過(guò)?Set-Cookie?消息頭設(shè)置的 cookie 一并發(fā)送至服務(wù)器。這些 cookie 并沒(méi)有什么明確的不同之處。

要使用 JavaScript 提取 cookie 的值,只需要從?document.cookie?中讀取即可。返回的字符串與?Cookie?消息頭中的字符串格式相同,所以多個(gè) cookie 會(huì)被分號(hào)和字符串分割。例如:

name1=Greg; name2=Nicholas

鑒于此,你需要手工解析這個(gè) cookie 字符串來(lái)提取真實(shí)的 cookie 數(shù)據(jù)。當(dāng)前已有許多描述如何利用 JavaScript 來(lái)解析 cookie 的資料,包括我的書(shū),Professional JavaScript,所以在這我就不再說(shuō)明。通常利用已存在的 JavaScript 庫(kù)操作 cookie 會(huì)更簡(jiǎn)單,如使用?YUI Cookie utility?來(lái)處理 cookie,而不要手工重新創(chuàng)建這些算法。

通過(guò)訪問(wèn)?document.cookie?返回的 cookie 遵循發(fā)向服務(wù)器的 cookie 一樣的訪問(wèn)規(guī)則。要通過(guò) JavaScript 訪問(wèn) cookie,該頁(yè)面和 cookie 必須在相同的域中,有相同的?path,有相同的安全級(jí)別。

注意:一旦 cookie 通過(guò) JavaScript 設(shè)置后便不能提取它的選項(xiàng),所以你將不能知道?domain,pathexpires?日期或?secure?標(biāo)記。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)