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
新聞熱點
疑難解答
圖片精選