国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET中Cookie編程的基礎知識(4)

2024-07-10 13:01:54
字體:
來源:轉載
供稿:網友

最大的網站源碼資源下載站,

讀取 cookie

  當瀏覽器向服務器發送請求時,該服務器的 cookie 會與請求一起發送。在 asp.net 應用程序中,您可以使用 request 對象來讀取 cookie。request 對象的結構與 response 對象的結構基本相同,所以從 request 對象中讀取 cookie 的方法與向 response 對象中寫入 cookie 的方法非常類似。以下示例顯示了兩種方法,目的都是獲取名為“username”的 cookie 的值并將值顯示在 label 控件中:

if not request.cookies("username") is nothing then
label1.text = server.htmlencode(request.cookies("username").value)
end if

if not request.cookies("username") is nothing then
dim acookie as httpcookie = request.cookies("username")
label1.text = server.htmlencode(acookie.value)
end if

  在獲取 cookie 的值之前,應該確保該 cookie 確實存在。否則,您將得到一個 system.nullreferenceexception(英文)異常。還需要注意的是,在頁面中顯示 cookie 的內容之前,我調用了 httpserverutility.htmlencode(英文)方法對 cookie 的內容進行編碼。之所以這樣做,是因為我要顯示 cookie 的內容(一般您不會這樣做)而且要確保沒有任何惡意用戶在 cookie 中添加了可執行腳本。有關 cookie 安全性的詳細信息,請參閱 cookie 和安全性。

  注意:由于不同的瀏覽器保存 cookie 的方式也不同,所以同一臺計算機上的不同瀏覽器不一定能夠相互讀取各自的 cookie。例如,如果使用 internet explorer 測試一個頁面,然后再使用其他瀏覽器進行測試,那么后者就不會找到 internet explorer 保存的 cookie。當然,大多數人一般都是使用同一種瀏覽器進行 web 交互的,因此在大多數情況下不會出現問題。但有時還是會遇到問題,比如您要測試應用程序對瀏覽器的兼容性。

  讀取 cookie 中子鍵值的方法與設置該值的方法類似。以下是獲取子鍵值的一種方法:

if not request.cookies("userinfo") is nothing then
label1.text = _
server.htmlencode(request.cookies("userinfo")("username"))
label2.text = _
server.htmlencode(request.cookies("userinfo")("lastvisit"))
end if

  在上面的示例中,我獲取的是子鍵“lastvist”的值,在此前的討論中我把該值設置為 datetime 值的字符串表示形式。請記住,cookie 是用字符串的形式保存值的,所以要將 lastvisit 值用作日期,就必須對其進行轉換:

dim dt as datetime
dt = cdate(request.cookies("userinfo")("lastvisit"))

  cookie 中子鍵的類型是 namevaluecollection(英文)類型的集合。因此,另一種獲取單個子鍵的方法是先獲取子鍵集合,然后按名稱提取子鍵的值,如下所示:

if not request.cookies("userinfo") is nothing then
dim userinfocookiecollection as _
system.collections.specialized.namevaluecollection
userinfocookiecollection = request.cookies("userinfo").values
label1.text = server.htmlencode(userinfocookiecollection("username"))
label2.text = server.htmlencode(userinfocookiecollection("lastvisit"))
end if

  就像設置 cookie 一樣,使用哪種方法讀取 cookie 也由您自己決定。

  什么是有效期?

  您可以讀取 cookie 的名稱和值,除此以外,需要了解的有關 cookie 的信息并不是很多。雖然您可以獲取 domain 和 path 屬性,但是這些屬性的用途很有限。例如,您可以讀取 domain 屬性,但如果您的頁面與 cookie 不在相同的域,您根本就不會在頁面的位置接收到該 cookie。

  您無法讀取的是 cookie 的過期日期和時間。事實上,當瀏覽器向服務器發送 cookie 信息時,瀏覽器并未將過期信息包括在內。您可以讀取 expires 屬性,但總是返回為零的日期/時間值。

  在前面的編寫 cookie 一節中,我已經講過,是瀏覽器負責管理 cookie 的,expires 屬性就很好地印證了這一點。expires 屬性的主要作用是幫助瀏覽器執行有關 cookie 保存的日常管理。從服務器的角度來看,cookie 要么存在要么不存在,所以對服務器而言,有效期并不是有用的信息。所以,瀏覽器在發送 cookie 時并不提供此信息。如果您需要 cookie 的過期日期,就必須重新設置,關于這一點我將在修改和刪除 cookie 中介紹。

  更確切地說,您可以在向瀏覽器發送 cookie 之前讀取已在 response 對象中設置的 expires 屬性,但您無法從返回的 request 對象中獲取有效期信息。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 太原市| 天长市| 武城县| 石柱| 松滋市| 扶风县| 都安| 沽源县| 澄迈县| 南开区| 浦城县| 黄骅市| 唐山市| 石嘴山市| 天津市| 姚安县| 庆云县| 泽库县| 南昌市| 福建省| 蒙自县| 砀山县| 高清| 宁津县| 明溪县| 鸡西市| 云浮市| 宁都县| 漳州市| 潢川县| 东安县| 汶上县| 手游| 东明县| 普兰店市| 三都| 民乐县| 锡林浩特市| 灵山县| 临泽县| 广水市|