成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

網(wǎng)站建設(shè)中的cookies

中國(guó)信息港 QQ800015119域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè)Cookies 為 Web 應(yīng)用程序提供了存儲(chǔ)特定用戶信息的方法。例如,當(dāng)一個(gè)

中國(guó)信息港 QQ800015119

域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè)

Cookies 為 Web 應(yīng)用程序提供了存儲(chǔ)特定用戶信息的方法。例如,當(dāng)一個(gè)用戶訪問網(wǎng)站的時(shí)候,你能夠使用 Cookies 來存儲(chǔ)該用戶的偏好或其他信息。在用戶下一次訪問網(wǎng)站的時(shí)候,應(yīng)用程序能夠獲取這些較早前被存儲(chǔ)的信息。 在中國(guó)信息港同事們的陪伴下,我的進(jìn)步也算明顯。!

什么是 Cookies ?

Cookies 是隨著請(qǐng)求連同頁(yè)面一起在 Web 服務(wù)器和瀏覽器之間來回流動(dòng)的小塊文本。Web 應(yīng)用程序能夠隨時(shí)在用戶訪問網(wǎng)站的時(shí)候讀取 Cookies 中所包含的信息。

例如,如果用戶在網(wǎng)站中請(qǐng)求頁(yè)面的時(shí)候,應(yīng)用程序除了返回一個(gè)頁(yè)面之外,還返回了一個(gè)包含日期和時(shí)間的 Cookie ,在用戶的瀏覽器獲得這個(gè)頁(yè)面的時(shí)候,瀏覽器就會(huì)獲得這個(gè) Cookie ,并把它存儲(chǔ)到用戶硬盤的特定目錄中。

然后,如果用戶想要再次從網(wǎng)站中請(qǐng)求該頁(yè)面,當(dāng)用戶在瀏覽器中輸入 URL 的時(shí)候?yàn)g覽器就會(huì)在本地硬盤中查找與該 URL 相關(guān)聯(lián)的 Cookie 。如果 Cookie 存在,瀏覽器就會(huì)把它連同頁(yè)面請(qǐng)求一起發(fā)送到網(wǎng)站中。這時(shí)候應(yīng)用程序就能夠檢測(cè)到用戶最后一次訪問網(wǎng)站的日期和時(shí)間。你可能還會(huì)使用這個(gè)信息來為用戶顯示消息或者檢查日期是否過期。

Cookies 是與網(wǎng)站相關(guān)聯(lián)的,而不是與特定的頁(yè)面相關(guān)聯(lián)的,所以不論用戶請(qǐng)求網(wǎng)站中的哪些頁(yè)面,都將會(huì)在瀏覽器和服務(wù)器之間交換 Cookies 信息。與用戶訪問不同的網(wǎng)站一樣,每個(gè)網(wǎng)站都能夠把 Cookie 發(fā)送到用戶的瀏覽器中;而瀏覽器會(huì)把所有來自于不同網(wǎng)站的 Cookies 分開進(jìn)行存儲(chǔ)。

Cookies 能夠幫助網(wǎng)站存儲(chǔ)訪問者的相關(guān)信息。通常情況下,Cookies 是在 Web 應(yīng)用程序中維護(hù)連續(xù)性的一種方式,也就是說,關(guān)于狀態(tài)管理。除了在它們實(shí)際交換信息之外,瀏覽器和 Web 服務(wù)器之間連接通常都是斷開的。用戶訪問 Web 服務(wù)器時(shí)所產(chǎn)生的每一個(gè)請(qǐng)求都被視為獨(dú)立的。多數(shù)時(shí)候,只要用戶在請(qǐng)求頁(yè)面,它都能夠幫助 Web 服務(wù)器對(duì)用戶進(jìn)行識(shí)別。例如,購(gòu)物網(wǎng)站的 Web 服務(wù)器會(huì)始終保持對(duì)每個(gè)購(gòu)物者的追蹤,從而能夠管理購(gòu)物車和其他特定的用戶信息。Cookie 因此扮演了名片的角色,呈現(xiàn)相關(guān)的鑒定信息來輔助應(yīng)用程序的運(yùn)行。

Cookies 能夠用于多種用途,這些用途全部都涉及到幫助網(wǎng)站對(duì)于用戶的記憶。例如,某個(gè)投票管理網(wǎng)站可能把 Cookie 簡(jiǎn)單地當(dāng)成一個(gè)布爾值來指明用戶的瀏覽器是否已經(jīng)參與投票,從而禁止該用戶的重復(fù)性投票;又如某個(gè)要求用戶登入的網(wǎng)站會(huì)使用 Cookie 來記錄用戶是否已經(jīng)登入,從而使得該用戶不再需要重復(fù)輸入驗(yàn)證信息。

Cookies 的局限性

大部分瀏覽器所支持的 Cookies 長(zhǎng)度最多不能超過 4096 字節(jié)。因?yàn)檫@個(gè)限制,Cookies 最適合被用來存儲(chǔ)小巧的數(shù)據(jù),最好是標(biāo)識(shí)符(如用戶 ID )。用戶 ID 這時(shí)候能夠被用來識(shí)別當(dāng)前用戶并從數(shù)據(jù)庫(kù)或其他數(shù)據(jù)存儲(chǔ)中讀取用戶信息。(請(qǐng)參考本文中關(guān)于存儲(chǔ)用戶信息的安全含意信息的[Cookies 和安全]部分。)

瀏覽器同樣限制了網(wǎng)站能夠存儲(chǔ)到用戶瀏覽器中的 Cookies 數(shù)量。大部分瀏覽器只允許每網(wǎng)站最多只能存儲(chǔ) 20 個(gè) Cookies ;如果你嘗試存儲(chǔ)更多,那么最舊的 Cookies 將被廢棄。有些瀏覽器同樣提出了一個(gè)絕對(duì)限制,它們所能接受的 Cookies 數(shù)量總和不能夠超過 300(來自于所有網(wǎng)站的 Cookies 的總和)。

你可能遇到的另一個(gè) Cookies 限制就是用戶能夠設(shè)置他們的瀏覽器來拒絕 Cookie 。如果你定義了一個(gè) P3P 機(jī)密策略并把它存放在網(wǎng)站的根目錄,大部分瀏覽會(huì)都將接受來自網(wǎng)站中的 Cookies 。但是,你可能已經(jīng)完全避免了 Cookies 的使用,從而使用了另一個(gè)不同的機(jī)制

第一萬維網(wǎng)【www.01www.com 】域名優(yōu)惠活動(dòng):com net org 新注冊(cè)49¥,續(xù)費(fèi)59¥

,

中國(guó)信息港 QQ800015119

域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè)

來存儲(chǔ)特定的用戶信息。存儲(chǔ)用戶信息的一種通用的方式就是使用會(huì)話狀態(tài),但是會(huì)話狀態(tài)又依賴于 Cookies ,與本文中的[Cookies 和會(huì)話狀態(tài)]部分所說明的一樣。

提示:更多關(guān)于在 Web 應(yīng)用程序中保存用戶信息的狀態(tài)管理和狀態(tài)選項(xiàng)的信息,請(qǐng)參考:[ASP.NET 狀態(tài)管理概覽]和[ASP.NET 狀態(tài)管理的建議]。

盡管 Cookies 在應(yīng)用程序中是比較實(shí)用的,但是應(yīng)用程序不應(yīng)該對(duì) Cookies 的使用而產(chǎn)生依賴。請(qǐng)不要使用 Cookies 來支持關(guān)鍵特征。如果你的應(yīng)用程序必須依賴于 Cookies ,你可以對(duì)瀏覽器進(jìn)行測(cè)試并了解其是否接受 Cookies 的使用。請(qǐng)參考本文中的[檢查瀏覽器是否接受 Cookies ]部分。

寫入 Cookies

瀏覽器負(fù)責(zé)在用戶系統(tǒng)中管理 Cookies 。發(fā)送到瀏覽器的 Cookies 經(jīng)過 HttpResponse 對(duì)象暴露了一個(gè)名為 Cookies 的集合。你能夠像訪問 Page 類的 Response 屬性一樣來訪問 HttpResponse 對(duì)象。任何你需要發(fā)送到瀏覽器的 Cookies 都必須被添加到這個(gè)集合中。在創(chuàng)建 Cookie 之后,你就需要為其指定 Name 和 Value 屬性。每個(gè) Cookie 必須擁有唯一的名稱才能夠在瀏覽器中被讀取的時(shí)候被識(shí)別。因?yàn)?Cookies 是通過名稱來存儲(chǔ)的,兩個(gè)使用相同名稱的 Cookies 中將會(huì)有一個(gè)會(huì)被覆蓋。

你同樣可以設(shè)置 Cookie 的過期日期和時(shí)間。已過期的 Cookies 會(huì)在用戶訪問網(wǎng)站并且重新寫入 Cookies 的時(shí)候被瀏覽器所刪除。Cookie 的過期可以根據(jù)應(yīng)用程序所決定的 Cookie 有效期來進(jìn)行設(shè)置。要使 Cookie 能夠長(zhǎng)期有效,你可以把過期日期設(shè)置成從現(xiàn)在所開始的后續(xù) 50 年時(shí)間。

提示:用戶能夠在任何時(shí)候清除計(jì)算機(jī)中的 Cookies 。即使你已經(jīng)存儲(chǔ)了一個(gè)長(zhǎng)期有效的 Cookie ,用戶還是能夠自行決定來刪除所有的 Cookies ,這樣一來,所有被存儲(chǔ)在 Cookies 中的設(shè)置都將被消毀。

如果你沒有設(shè)置 Cookie 的有效期,Cookie 仍然能夠被創(chuàng)建,但是并不會(huì)被存儲(chǔ)到用戶的硬盤中。相反,這種 Cookie 是作為用戶會(huì)話信息的一部分而被維護(hù)的。當(dāng)用戶關(guān)閉瀏覽器,Cookie 也隨之被廢棄。類似于這種非持續(xù)保持的 Cookie 在只需要短暫存儲(chǔ)信息或者出于安全原因而不應(yīng)該寫入到客戶端計(jì)算機(jī)的硬盤中的時(shí)候是比較有用的。例如,非持續(xù)保持的 Cookies 適用于用戶在公共計(jì)算機(jī)上使用,或者你不想把 Cookie 寫入到硬盤的情況下使用。

你能夠使用多種方法把 Cookies 寫入到 Cookies 集合中。如下實(shí)例說明了兩個(gè)寫入 Cookies 的方式: Response.Cookies["userName"].Value = "patrick";

Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);

HttpCookie aCookie = new HttpCookie("lastVisit");

aCookie.Value = DateTime.Now.ToString();

第一萬維網(wǎng)【www.01www.com 】域名優(yōu)惠活動(dòng):com net org 新注冊(cè)49¥,續(xù)費(fèi)59¥

,

中國(guó)信息港 QQ800015119

域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè) aCookie.Expires = DateTime.Now.AddDays(1);

Response.Cookies.Add(aCookie);

該實(shí)例在 Cookies 集合中添加了兩個(gè) Cookies ,一個(gè)被命名為 userName 而另一個(gè)被命名為 lastVisit 。至于第一個(gè) Cookie ,直接設(shè)置了 Cookies 集合的值。你可以使用這個(gè)方法來在集合中添加值,因?yàn)?Cookies 是繼承自 NameObjectCollectionBase 類型的一個(gè)專用集合。 至于第二個(gè) Cookie ,代碼創(chuàng)建了 HttpCookie 類型的一個(gè)對(duì)象實(shí)例,并設(shè)置它的屬性,然后通過 Add 方法把它添加到 Cookies 集合中。當(dāng)你實(shí)例化一個(gè) HttpCookie 對(duì)象的時(shí)候,你必須把 Cookie 的名稱作為構(gòu)造器的一個(gè)部分進(jìn)行傳遞。

這兩個(gè)實(shí)例都完成了把 Cookie 寫入到瀏覽器的相同任務(wù)。在這兩個(gè)方法中,有效期屬性值的類型必須是 DateTime 。但是,lastVisited 中的值同樣也是一個(gè)表示時(shí)間日期的值。因?yàn)樗?Cookie 的值都應(yīng)該被存儲(chǔ)成字符串格式,所以日期時(shí)間值會(huì)被自動(dòng)轉(zhuǎn)換成字符串。 擁有多個(gè)值的 Cookies

你能夠在 Cookie 中存儲(chǔ)單獨(dú)的值,如用戶名稱或最后訪問的時(shí)間。你同樣可以在單獨(dú)的 Cookie 中存儲(chǔ)多個(gè) Name/Value 數(shù)據(jù)對(duì)。Name/Value 數(shù)據(jù)對(duì)被引用成子鍵。(子鍵展開之后的格式與 URL 中的查詢字符串相似。)例如,作為創(chuàng)建名為 userName 和 lastVisit 的兩個(gè)分開的 Cookies 的替代,你可以創(chuàng)建名為 userInfo 的單獨(dú) Cookie 來包含子鍵 userName 和 lastVisit 。

你可能出于幾個(gè)原因而使用子鍵。首先,它對(duì)于把相關(guān)信息或類似信息放進(jìn)單獨(dú)的 Cookie 中是比較方便的。另外,因?yàn)樗行畔⒍荚趩为?dú)的 Cookie 中,Cookie 的參數(shù)(如有效期)會(huì)被應(yīng)用到所有信息。(相反,如果你需要為不同類型的信息指定不同的有效期,那么你就應(yīng)該把這些信息存儲(chǔ)到單獨(dú)的 Cookies 中。)

使用子鍵的 Cookie 同樣有助于你突破 Cookie 文件尺寸的限制。與先前在[Cookie 的局限性]部分中所描述的一樣,Cookies 的尺寸上限通常是 4096 個(gè)字節(jié),并且你不能為單個(gè)網(wǎng)站存儲(chǔ)超過 20 個(gè)以上的 Cookies 。通過使用包含子鍵的單獨(dú) Cookie ,你可以減少 Cookies 的使用數(shù)量。另外,單獨(dú)的 Cookie 中最多只能出現(xiàn) 50 個(gè)字符(有效期信息,等等),加上保存在其中的值的長(zhǎng)度,全部總和相加后接近 4096 個(gè)字節(jié)。如果你使用 5 個(gè)子鍵來取代 5 個(gè)分離的 Cookies ,那么你能夠在每個(gè) Cookies 中保存接近 200 個(gè)字節(jié)的數(shù)據(jù)。

要?jiǎng)?chuàng)建包含子鍵的 Cookie ,你就要使用不同的語法來寫入單獨(dú)的 Cookie 。下列實(shí)例說明了寫入相同 Cookie (分別包含了兩個(gè)子鍵)的兩個(gè)方式: Response.Cookies["userInfo"]["userName"] = "patrick";

Response.Cookies["userInfo"]["lastVisit"] = DateTime.Now.ToString();

Response.Cookies["userInfo"].Expires = DateTime.Now.AddDays(1);

第一萬維網(wǎng)【www.01www.com 】域名優(yōu)惠活動(dòng):com net org 新注冊(cè)49¥,續(xù)費(fèi)59¥

,

中國(guó)信息港 QQ800015119

域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè) HttpCookie aCookie = new HttpCookie("userInfo");

aCookie.Values["userName"] = "patrick";

aCookie.Values["lastVisit"] = DateTime.Now.ToString();

aCookie.Expires = DateTime.Now.AddDays(1);

Response.Cookies.Add(aCookie);

控制 Cookie 的作用范圍

默認(rèn)時(shí),網(wǎng)站的所有 Cookies 都一起被存儲(chǔ)在客戶端,并且所有 Cookies 連同網(wǎng)站的任何請(qǐng)求一起被發(fā)送到服務(wù)器。換句話說,網(wǎng)站中的每個(gè)頁(yè)面都能夠?yàn)榫W(wǎng)站獲取所有的 Cookies 。但是,你能夠通過兩個(gè)方式來設(shè)置 Cookies 的作用范圍:

把 Cookies 的作用范圍限制到服務(wù)器的目錄,從而允許你把 Cookies 限制到網(wǎng)站的某個(gè)應(yīng)用程序。

設(shè)置域的作用范圍,能夠允許你指定域中的哪些子域能夠訪問 Cookie 。

把 Cookies 限制到目錄或應(yīng)用程序

要把 Cookies 限制到服務(wù)器的目錄,請(qǐng)?jiān)O(shè)置 Cookie 的 Path 屬性,如下實(shí)例所示: HttpCookie appCookie = new HttpCookie("AppCookie");

appCookie.Value = "written " DateTime.Now.ToString();

appCookie.Expires = DateTime.Now.AddDays(1);

appCookie.Path = "/Application1";

Response.Cookies.Add(appCookie);

提示:你同樣可以通過直接添加到 Cookies 集合的方式來寫入 Cookies ,如前面的實(shí)例所示。 路徑既能夠位于網(wǎng)站的物理根目錄中也能夠位于虛擬根目錄中。結(jié)果將會(huì)是 Cookie 只對(duì)于目錄或者虛擬根 Application1 中的頁(yè)面可用。例如,如果你的網(wǎng)址是www.cncnc.com.cn ,在前面的實(shí)例中所創(chuàng)建的 Cookie 將只對(duì)于路徑 http:// www.cncnc.com.cn/Application1/ 以及其下所有子目錄中的頁(yè)面可用。但是,該 Cookie 對(duì)于其他應(yīng)用程序(如 http:// www.cncnc.com.cn/Application2/ 或者 /)中的頁(yè)面則是不可用的。 提示:部分瀏覽器中的路徑對(duì)大小寫字母是敏感的。你無法控制用戶如何在他們的瀏覽器中輸入 URL ,但是如果你的應(yīng)用程序依賴于 Cookies 來約束特定的路徑,請(qǐng)確保你所創(chuàng)建的

第一萬維網(wǎng)【www.01www.com 】域名優(yōu)惠活動(dòng):com net org 新注冊(cè)49¥,續(xù)費(fèi)59¥

,

中國(guó)信息港 QQ800015119

域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè) 任何超級(jí)鏈接中的 URL 能夠與 Path 屬性值中的大小寫相匹配。

限制 Cookie 的域范圍

默認(rèn)時(shí),Cookies 是與特定的域相關(guān)聯(lián)的。例如,如果你的網(wǎng)站是 www.contoso.com ,你寫入的 Cookies 會(huì)在用戶從網(wǎng)站中請(qǐng)求任何頁(yè)面的時(shí)候被發(fā)送到服務(wù)器。(可能不包括有特定的路徑值的 Cookies 。)如果你的網(wǎng)站中還擁有子域(例如,contoso.com 、sales.contoso.com 、以及 support.contoso.com ),那么你可以把特定的子域與 Cookies 相關(guān)聯(lián)。要這樣做,請(qǐng)?jiān)O(shè)置 Cookie 的 Domain 屬性,如實(shí)例所示: Response.Cookies["domain"].Value = DateTime.Now.ToString();

Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1);

Response.Cookies["domain"].Domain = "support.contoso.com";

當(dāng)按照這樣設(shè)置域之后,Cookie 將只對(duì)于特定域中的頁(yè)面可用。你同樣能夠使用 Domain 屬性來創(chuàng)建一個(gè)能夠在多個(gè)子域之間被共享的 Cookie ,如下實(shí)例所示: Response.Cookies["domain"].Value = DateTime.Now.ToString();

Response.Cookies["domain"].Expires = DateTime.Now.AddDays(1);

Response.Cookies["domain"].Domain = "contoso.com";

Cookie 這時(shí)候?qū)⑴c sales.contoso.com 和 support.contoso.com 域一樣對(duì)于主域是可用的。 讀取 Cookies

在瀏覽器向服務(wù)器發(fā)送請(qǐng)求的時(shí)候,它會(huì)把 Cookies 連同請(qǐng)求一起發(fā)送到服務(wù)器。在你的 ASP.NET 應(yīng)用程序中,你能夠使用 HttpRequest 對(duì)象來讀取 Cookies ,該對(duì)象是作為 Page 類的 Request 屬性出現(xiàn)的。HttpRequest 對(duì)象的結(jié)構(gòu)實(shí)質(zhì)上與 HttpResponse 對(duì)象一樣,所以你能夠使用把 Cookies 寫入到 HttpResponse 對(duì)象類似的方式從 HttpRequest 對(duì)象中讀出 Cookies 。如下代碼實(shí)例說明了獲取 Cookie (名為 userName )的值并顯示到一個(gè) Label 控件中的兩種方式: if(Request.Cookies["userName"] != null)

Label1.Text = Server.HtmlEncode(Request.Cookies["userName"].Value);

第一萬維網(wǎng)【www.01www.com 】域名優(yōu)惠活動(dòng):com net org 新注冊(cè)49¥,續(xù)費(fèi)59¥

,

中國(guó)信息港 QQ800015119

域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè) if(Request.Cookies["userName"] != null)

{

HttpCookie aCookie = Request.Cookies["userName"];

Label1.Text = Server.HtmlEncode(aCookie.Value);

}

在嘗試獲取 Cookie 的值之前,你應(yīng)該先確定該 Cookie 已經(jīng)存在;如果該 Cookie 并不存在,你將會(huì)得到一個(gè) NullReferenceException 異常。注意到在顯示 Cookie 的內(nèi)容之前已經(jīng)調(diào)用了 HtmlEncode 方法進(jìn)行編碼。這使得惡意用戶無法在 Cookie 中添加可執(zhí)行腳本。關(guān)于 Cookie 安全性的更多信息,請(qǐng)參考:[Cookies 和安全]。

提示:因?yàn)椴煌臑g覽器存儲(chǔ) Cookies 的方式都各不相同,相同計(jì)算機(jī)中的瀏覽器無法讀取其他類型瀏覽器所設(shè)置的 Cookies 。例如,如果你使用 Internet Explorer 來測(cè)試頁(yè)面,然后又使用另一個(gè)不同的瀏覽器再次進(jìn)行測(cè)試,第二個(gè)瀏覽器將無法找到由 Internet Explorer 所保存的 Cookies 。

從 Cookie 中讀取子鍵的值與設(shè)置的時(shí)候相似。如下代碼實(shí)例說明了獲取子鍵的值的一種方式: if(Request.Cookies["userInfo"] != null)

{

Label1.Text =

Server.HtmlEncode(Request.Cookies["userInfo"]["userName"]);

Label2.Text =

Server.HtmlEncode(Request.Cookies["userInfo"]["lastVisit"]);

}

在前面的實(shí)例中,代碼讀取子鍵 lastVisit 中的值,該值在前面的實(shí)例中被設(shè)置成一個(gè)被呈現(xiàn)成字符串的 DateTime 值。Cookies 把值存儲(chǔ)成為字符串,所以如果你需要把 lastVisit 的值當(dāng)成日期對(duì)象來使用,你就應(yīng)該把它轉(zhuǎn)換成適當(dāng)?shù)念愋?,如下?shí)例所示:

DateTime dt;

dt = DateTime.Parse(Request.Cookies["userInfo"]["lastVisit"]);

第一萬維網(wǎng)【www.01www.com 】域名優(yōu)惠活動(dòng):com net org 新注冊(cè)49¥,續(xù)費(fèi)59¥

,

中國(guó)信息港 QQ800015119

域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè)

Cookie 中的子鍵被類型化成為 NameValueCollection 類型的一個(gè)集合。因此,獲取單獨(dú)子鍵的另一種方式就是先獲取子鍵集合然后通過名稱來提取子鍵的值,如下實(shí)例所示: if(Request.Cookies["userInfo"] != null)

{

System.Collections.Specialized.NameValueCollection

UserInfoCookieCollection;

UserInfoCookieCollection = Request.Cookies["userInfo"].Values;

Label1.Text =

Server.HtmlEncode(UserInfoCookieCollection["userName"]);

Label2.Text =

Server.HtmlEncode(UserInfoCookieCollection["lastVisit"]);

}

改變 Cookie 的過期時(shí)間

瀏覽器負(fù)責(zé)管理 Cookies ,并且 Cookie 的過期時(shí)間和日期有助于瀏覽器對(duì)所存儲(chǔ)的 Cookies 進(jìn)行管理。因此,雖然你能夠讀取 Cookie 的名稱和值,但是你無法讀取 Cookie 的過期日期和時(shí)間。在瀏覽器把 Cookie 信息發(fā)送到服務(wù)器的時(shí)候,瀏覽器中并不包括有效期信息。(Cookie 的 Expires 屬性始終返回為零的日期值。)如果你關(guān)心 Cookie 的過期時(shí)間,你就應(yīng)該把它重置,具體操作被包含在本文的[更改并刪除 Cookies ]部分。

提示:在 Cookie 被發(fā)送到瀏覽器之前,你能夠讀取 Cookie 的 Expires 屬性(該屬性在 HttpResponse 對(duì)象中被設(shè)置)。但是,你不能從 HttpRequest 對(duì)象中反向獲取過期時(shí)間。

讀取 Cookie 集合

第一萬維網(wǎng)【www.01www.com 】域名優(yōu)惠活動(dòng):com net org 新注冊(cè)49¥,續(xù)費(fèi)59¥

,

中國(guó)信息港 QQ800015119

域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè)

你偶爾可能需要讀取所有的 Cookies 并為頁(yè)面可用。要把所有 Cookies 的名稱和值讀取到頁(yè)面中,你可以如下代碼對(duì) Cookies 集合進(jìn)行循環(huán)。 System.Text.StringBuilder output = new System.Text.StringBuilder();

HttpCookie aCookie;

for(int i=0; i

{

aCookie = Request.Cookies[i];

output.Append("Cookie name = " Server.HtmlEncode(aCookie.Name)

"
");

output.Append("Cookie value = " Server.HtmlEncode(aCookie.Value)

"

");

}

Label1.Text = output.ToString();

提示:當(dāng)你運(yùn)行這段代碼的時(shí)候,你可能會(huì)看到一個(gè)名為 ASP.NET_SessionId 的 Cookie 。也就是 ASP.NET 用來為你的會(huì)話而存儲(chǔ)唯一標(biāo)識(shí)符的 Cookie 。這個(gè)會(huì)話 Cookie 不會(huì)被保持到你的硬盤中。更多關(guān)于會(huì)話 Cookies 的信息,請(qǐng)參考本文中的[Cookies 和會(huì)話狀態(tài)]部分。

前面實(shí)例的一個(gè)局限性就是如果 Cookie 擁有子鍵,執(zhí)行結(jié)果會(huì)把子鍵顯示成一個(gè) Name/Value 字符串。你能夠讀取 Cookie 的 HasKeys 屬性來檢測(cè) Cookie 中是否含有子鍵。如果是,你就能夠讀取子鍵的集合并獲取單獨(dú)的子鍵名稱和值。你能夠從 Values 集合中直接使用索引值來讀取子鍵的值。相應(yīng)的子鍵名稱在 Values 集合的 AllKeys 成員中是可用的,從而返回一個(gè)字符串?dāng)?shù)組。你同樣可以使用 Values 集合中的 Keys 成員。但是,AllKeys 屬性在第一次被訪問的時(shí)候就會(huì)被緩存起來。恰好相反,Keys 屬性則在每次被訪問的時(shí)候都建立一個(gè)新的數(shù)組。正是因?yàn)檫@個(gè)原因,AllKeys 屬性在相同頁(yè)面請(qǐng)求環(huán)境的后繼訪問中是非常高效的。

第一萬維網(wǎng)【www.01www.com 】域名優(yōu)惠活動(dòng):com net org 新注冊(cè)49¥,續(xù)費(fèi)59¥

,

中國(guó)信息港 QQ800015119

域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè)

如下實(shí)例說明了對(duì)前面實(shí)例的修正。它使用 HasKeys 屬性對(duì)子鍵進(jìn)行測(cè)試,如果子鍵被檢測(cè)到,那么該實(shí)例就從 Values 集合中獲取子鍵: for(int i=0; i

{

aCookie = Request.Cookies[i];

output.Append("Name = " aCookie.Name "
");

if(aCookie.HasKeys)

{

for(int j=0; j

{

subkeyName = Server.HtmlEncode(aCookie.Values.AllKeys[j]); subkeyValue = Server.HtmlEncode(aCookie.Values[j]);

output.Append("Subkey name = " subkeyName "
");

output.Append("Subkey value = " subkeyValue

"

");

}

}

else

{

output.Append("Value = " Server.HtmlEncode(aCookie.Value)

"

");

}

}

Label1.Text = output.ToString();

第一萬維網(wǎng)【www.01www.com 】域名優(yōu)惠活動(dòng):com net org 新注冊(cè)49¥,續(xù)費(fèi)59¥

,

中國(guó)信息港 QQ800015119

域名注冊(cè) 服務(wù)器托管 VPS主機(jī) 服務(wù)器租用 海外空間 數(shù)據(jù)庫(kù) 網(wǎng)站建設(shè) 或者,你也可以像如下實(shí)例一樣把子鍵當(dāng)成 NameValueCollection 對(duì)象來提?。? System.Text.StringBuilder output = new System.Text.StringBuilder(); HttpCookie aCookie;

string subkeyName;

string subkeyValue;

for (int i = 0; i < Request.Cookies.Count; i )

{

aCookie = Request.Cookies[i];

output.Append("Name = " aCookie.Name "
");

if (aCookie.HasKeys)

{

System.Collections.Specialized.NameValueCollection CookieValues = aCookie.Values;

string[] CookieValueNames = CookieValues.AllKeys;

for (int j = 0; j < CookieValues.Count; j )

{

subkeyName = Server.HtmlEncode(CookieValueNames[j]);

subkeyValue = Server.HtmlEncode(CookieValues[j]);

第一萬維網(wǎng)【www.01www.com 】域名優(yōu)惠活動(dòng):com net org 新注冊(cè)49¥,續(xù)費(fèi)59¥

標(biāo)簽: