23.3 數(shù)據(jù)存儲(chǔ) 633
1
15
16
4
5
13
6
20
21
9
23
11
12
//設(shè)置 cookie,包括它的路徑、域、失效日期
CookieUtil.set(\"name\", \"Nicholas\", \"/books/projs/\", \"www.wrox.com\",
new Date(\"January 1, 2010\"));
//刪除剛剛設(shè)置的 cookie
CookieUtil.unset(\"name\", \"/books/projs/\", \"www.wrox.com\");
//設(shè)置安全的 cookie
CookieUtil.set(\"name\", \"Nicholas\", null, null, null, true);
CookieExample01.htm
這些方法通過(guò)處理解析、構(gòu)造 cookie 字符串的任務(wù)令在客戶端利用 cookie 存儲(chǔ)數(shù)據(jù)更加簡(jiǎn)單。
4. 子 cookie
為了繞開瀏覽器的單域名下的 cookie 數(shù)限制,一些開發(fā)人員使用了一種稱為子 cookie(subcookie)
的概念。子 cookie 是存放在單個(gè) cookie 中的更小段的數(shù)據(jù)。也就是使用 cookie 值來(lái)存儲(chǔ)多個(gè)名稱值對(duì)
兒。子 cookie 最常見的的格式如下所示。
name=name1=value1&name2=value2&name3=value3&name4=value4&name5=value5
子 cookie 一般也以查詢字符串的格式進(jìn)行格式化。然后這些值可以使用單個(gè) cookie 進(jìn)行存儲(chǔ)和訪
問(wèn),而非對(duì)每個(gè)名稱??值對(duì)兒使用不同的 cookie 存儲(chǔ)。最后網(wǎng)站或者 Web 應(yīng)用程序可以無(wú)需達(dá)到單域名
cookie 上限也可以存儲(chǔ)更加結(jié)構(gòu)化的數(shù)據(jù)。
為了更好地操作子 cookie,必須建立一系列新方法。子 cookie 的解析和序列化會(huì)因子 cookie 的期望
用途而略有不同并更加復(fù)雜些。例如,要獲得一個(gè)子 cookie,首先要遵循與獲得 cookie 一樣的基本步驟,
但是在解碼 cookie 值之前,需要按如下方法找出子 cookie 的信息。
var SubCookieUtil = {
get: function (name, subName){
var subCookies = this.getAll(name);
if (subCookies){
return subCookies[subName];
} else {
return null;
}
},
getAll: function(name){
var cookieName = encodeURIComponent(name) + \"=\",
cookieStart = document.cookie.indexOf(cookieName),
cookieValue = null,
cookieEnd,
subCookies,
i,
parts,
result = {};
if (cookieStart > -1){
cookieEnd = document.cookie.indexOf(\";\", cookieStart);
if (cookieEnd == -1){
cookieEnd = document.cookie.length;
}
cookieValue = document.cookie.substring(cookieStart +
圖靈社區(qū)會(huì)員 StinkBC(StinkBC@gmail.com) 專享 尊重版權(quán)