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

首頁 > 學院 > 開發設計 > 正文

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

2019-11-18 19:11:09
字體:
來源:轉載
供稿:網友
     讀取 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 對象中獲取有效期信息。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肥西县| 舟曲县| 嘉禾县| 兰西县| 新源县| 海林市| 白朗县| 平原县| 荔浦县| 南木林县| 黔东| 黔南| 万源市| 无极县| 公主岭市| 尤溪县| 鄂尔多斯市| 浦东新区| 确山县| 沂南县| 苏尼特右旗| 甘泉县| 周口市| 漾濞| 如东县| 芜湖市| 于都县| 英吉沙县| 敦化市| 彭山县| 平山县| 临江市| 湖口县| 利津县| 德化县| 荔波县| 玉田县| 朝阳县| 五河县| 乾安县| 林口县|