asp.net|cookie
Cookies用於儲存特定使用者資訊,它提供了Web程式中一種有用的方式。多年以來,JavaScript開發人員已經進行了有關cookie的大量工作。同樣,ASP.NET通過System.Web空間名稱也提供了cookie的訪問。雖然你不應該使用cookie來儲存一些敏感性的資料,但是,它們是處理鎖細資料的一個極好的選擇,比如顏色參數選擇或者最後一次訪問日期。
傳遞cookies
cookie是儲存在用戶端電腦的一個小檔案。如果你是一個Windows使用者,可以在使用者路徑中查看Cookies路徑,即為Documents And Settings路徑。這一路徑包含這一檔案名稱的文字檔:
username @ Web site domain that created the cookie
(使用者名稱稱@建立cookie的網站網域名稱)
.NET System.Web空間名稱包含三個類,你可以使用它們來處理用戶端的Cookies:
HttpCookie:提供一個建立和操作獨立HTTP cookies的安全類型的方式。
HttpResponse:Cookies屬性允許用戶端cookies被操作。
HttpRequest:Cookies屬性允許訪問用戶端操作的cookies。
HttpResponse和HttpRequest對象的Cookies屬性將返回一個HttpCookieCollection對象,它包含著,將單獨的cookies添加到集合(collection)中,以及從集合(collection)獲得一個單獨的cookies。
HttpCookie類
HttpCookie類針對於客戶儲存之用而建立的單獨cookies。一旦HttpCookie對象被建立,你可以將其添加到HttpResponse對象的Cookies屬性中。同樣的,你可以通過HttpRequest對象訪問現有的cookies。HttpCookie類包含以下的公有屬性:
Domain(網域名稱):獲得或設定與cookie有關的網域名稱,可用於限制特定地區的cookie訪問。
Expires(期限):獲得或設定cookie的終止日期和時間,你可以將其設定為一個過去的日期以自動終止或者刪除cookie。
Names(名稱):獲得或設定cookie名稱。
Path(路徑):獲得或設定cookie的虛擬路徑。這一屬性允許你限制cookie範圍,也就是說,訪問cookie只能限制於一個特定的檔案夾或者路徑。設定這一屬性限制為只能訪問特定路徑和該路徑下的所有檔案。
Secure(安全):發訊號以表示是否使用Secure Sockets Layer (SSL)來發送cookie值。
Value(值):獲得或設定一個單獨的cookie值。
Values(資訊):返回包含在cookie中的key/value的一個集合。
雖然這些還不是一個最詳盡的列表,但它提供了處理cookies所需要的東西。對於這些屬性的使用,以下VB.NET範例給予最好的理解:
Dim testCookie As New HttpCookie("LastVisited")
testCookie.Value = DateTime.Now.ToString
testCookie.Expires = DateTime.Now.AddDays(7)
testCookie.Domain = "builder.com"
Response.Cookies.Add(testCookie)
這一程式碼片段建立了一個名為LastVisited的新的cookie,並賦予當前日期和時間的值。同樣的,cookie終止期限設定為一個星期,相關的範圍為populated。一旦建立對象,通過Response.Cookies對象的Add方法就可以將對象添加到用戶端的cookies集合。HttpCookie建構函式中的方法有兩種:
HttpCookie objectName = New HttpCookie("cookieName")
HttpCookie objectName = New HttpCookie("cookieName", "cookieValue")
同樣,Response對象包含一個SetCookie方法,這一方法可以接受一個HttpCookie對象。
我的cookie在哪裡?
一旦cookies被儲存在用戶端,有多種不同的方法以提供你訪問它們。如果你知道cookie名稱,可以使用HttpResponse對象很容易地訪問它的值。以下VB.NET行顯示了與cookie有關的值:
Response.Write(Request.Cookies("LastVisitied").Value)
除此之外,可以通過一個HttpCookieCollection對象訪問cookies的完整列表。這就使得cookie列表可以用一個for迴圈來訪問。以下C#代碼說明了這樣的例子:
HttpCookieCollection cookies;
HttpCookie oneCookie;
cookies = Request.Cookies;
string[] cookieArray = cookies.AllKeys;
for (int i=0; I < cookieArray.Length; i++) {
oneCookie = cookies[cookieArray[i]];
Response.Write(oneCookie.Name + " - " + oneCookie.Value);
}
VB.NET中相應的代碼如下:
Dim i As Integer
Dim oneCookie As HttpCookie
For i = 0 To Request.Cookies.Count - 1
oneCookie = Request.Cookies(i)
Response.Write(oneCookie.Name + " - " + oneCookie.Value)
Next I
[1] [2] 下一頁