熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET中Cookie編程簡明參考

2013-11-13 12:23:23  來源: .NET編程 

  寫入Cookie

   Name 和 Value 屬性由程序設定默認值都是空引用

   Domain屬性的默認值為當前URL的域名部分不管發出這個cookie的頁面在哪個目錄下的

  例如http://wwwkentcom/application/loginaspx 頁面中發出一個cookieDomain屬性缺省就是wwwkentcom 可以由程序設置此屬性為需要的值

   Path屬性的默認值是根目錄/ 不管發出這個cookie的頁面在哪個目錄下的可以由程序設置為一定的路徑來進一步限制此cookie的作用范圍

   Expires 屬性這個屬性設置此Cookie 的過期日期和時間如果沒有設置 Cookie 的有效期(默認設置)也可以創建 Cookie但它不會保存到用戶的硬盤上而是會成為用戶會話信息的一部分關閉浏覽器或會話超時這個Cookie即會消失這種Cookie稱作非永久性的 Cookie存放SessionID的Cookie就是這樣的一種Cookie它不存放在硬盤上只存在內存之中

   將要發出的Cookie附加到Response的Cookies屬性中就可以將此Cookie發送到客戶端ReponseCookiesAdd(Cookie)

   Domain屬性+Path屬性 相同的所有Cookie 在客戶端都存在一個文件中Cookie之間以*分割每個Cookie的第一行是 Cookie 的名稱第二行是值第三行是Domain屬性+Path屬性組成的一個字符串指示此Cookie的作用域其余各行則包含 Cookie 的日常處理信息例如過期日期和時間Cookie 中還有一個簡單的校驗和如果更改 Cookie 名稱或值的長度浏覽器就會檢測到修改並刪除該 Cookie

  讀取Cookie

   RequestCookies 屬性中包含了客戶端發送到服務器的所有Cookie的集合只有在請求URL的作用范圍內的Cookie才會被浏覽器連同Http請求一起發送到服務器

   Name 和 Value 屬性和子鍵的值很容易讀到

   Domain 和 Path 屬性 是讀不到的讀Domain屬性永遠是讀Path屬性永遠是 / 本來這些屬性的用途很有限如果您的頁面與 Cookie 不在相同的域您根本就不會在頁面的位置接收到該 Cookie

   也無法讀取Cookie 的過期日期和時間事實上當浏覽器向服務器發送 Cookie 信息時浏覽器並未將過期信息包括在內您可以讀取 Expires 屬性但總是返回為零的日期/時間值Expires 屬性的主要作用是幫助浏覽器執行有關 Cookie 保存的日常管理從服務器的角度來看Cookie 要麼存在要麼不存在所以對服務器而言有效期並不是有用的信息
所以浏覽器在發送 Cookie 時並不提供此信息如果您需要 Cookie 的過期日期就必須重新設置

  修改和刪除 Cookie

   其實你不能直接修改一個Cookie是創建一個同名的 Cookie並把該 Cookie 發送到浏覽器覆蓋客戶機上舊的 Cookie

   同樣您無法直接將其刪除一個Cookie可以通過修改一個Cookie達到讓浏覽器幫你刪除Cookie的目的修改Cookie的有效期為過去的某個時間當浏覽器檢查 Cookie 的有效期時就會刪除這個已過期的 Cookie

  Cookie同Session的關系

   aspnet中Session可以采用cookie 和cookieless兩種方法cookieless方式是將SessionID放在URL中在客戶端和服務端中來回傳遞不需要用到cookie在這裡不討論這個方式

   在aspnet中客戶第一次請求一個URL服務器給這個客戶生成一個SessionID並以非永久性的 Cookie發送到客戶端

   非永久性的 Cookie只有在浏覽器關閉後這些Cookie才隨之消失Session的超時判斷是這樣的過程

   第一次客戶端訪問服務器會得到一個SessionID以非永久性的 Cookie發送到客戶端

   在這個浏覽器關閉之前訪問這個URL浏覽器都會把這個SessionID發送到服務端服務端根據SessionID來維持對應此客戶的服務端的各種狀態(就是Session中保存的各種值)在web應用程序中可以對這些Session進行操作

   服務端維護此SessionID的過期時間IIS中可以設置Session的超時時間每次請求都將導致服務端將此SessioID的過期時間延長一個設置的超時時間

   當服務端發現某個SessionID已經過時即某個客戶已經在設置的超時時間內沒有再次訪問此站點即將此SessionID連同跟此SessionID相關的所有Session變量刪除

   客戶端的浏覽器未關閉前並不知道服務端已經將這個SessionID刪除客戶端依舊發送此SessionID的cookie到服務端只是此時的服務端已經不認識此SessionID了會將此用戶當做新用戶再次分配一個新的SessionID


From:http://tw.wingwit.com/Article/program/net/201311/15805.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.