在ASP中訪問和更新Cookies集合

來源:互聯網
上載者:User

Cookies的值比ASP其他集合(例如Form和ServerVariables)的值要複雜得多。Cookie是一小塊由瀏覽器存貯在用戶端系統上的文本,且隨同每次請求發往它們應用於的域中的伺服器。

ASP使得應用cookie較為容易,可以從Request對象的Cookies集合中獲得所有隨同請求發出的cookie值,並可建立或修改cookie,通過Response對象的Cookies集合發回給使用者。

Cookie包含可用兩種方式構造的資訊,單值cookie提供其值給代碼是通過一個一般的類ASP集合。然而,集合的每個成員可能本身也是一個集合,包含這種資訊的cookie通過稱為多值(multiple-Value)cookie。

建立一個單值的cookie較為簡單,如下所示:

Response.Cookies(“item-name”) = “item-value”

建立一個多值的cookie,可以使用如下命令:

Response.Cookies(“item-name”)(“sub-item-name”) = “sub-item-value”

設定cookie應用的域及路徑及其有效期間,我們使用:

Response.Cookies(“item-name”).domain = “domain-url”
Response.Cookies(“item-name”).path = “virtual-path”
Response.Cookies(“item-name”).expires = #date#

通常,客戶只在對建立cookie的目錄中的頁面提出請求時,才將cookie隨請示發住伺服器。通過指定path屬性,可以指定網站中何處這個cookie是合法的,並且這個cookie將隨請求發送。如果cookie隨對整個網站的頁面請求發送,設定path為“/”。

假如Expires屬性沒有設定,關閉當前的瀏覽器執行個體時,cookie將被自動消除。

注意,我們在向瀏覽器發送任何輸出時,已經建立了cookie。因為,這些cookie是頁面HTTP前序的一部分。

在ASP 3.0中,緩衝的預設狀態是開啟的,且沒有輸出被發送,除非使用Response.Flush指定做這個工作或者頁面已到末端。這意味著建立cookie的代碼可以在頁面上的任何位置,直到任何輸出“重新整理”(flush)到用戶端前,它都可以被執行。

要讀現有的cookie,使用Request.Cookies集合。可以單獨訪問其中的項目,方法類似於建立它們時使用的方法。

StrSingleValue = Request.Cookies(“item-name”)
StrSubItemValue = Request.Cookies(“item-name”)(“sub-item-name”)

注意Request.Cookies集合(和所有其他Request集合一樣)是唯讀。Response.Cookies集合是唯寫的,事實上可以訪問這個集合中一系列cookie的名稱,而不是它們的值。

遍曆Cookies集合

為了使用Cookies集合更加方便,可使用名稱為Haskeys的附加屬性。假如訪問的cookie本身也是個集合,即它是一個多值的cookie,這將返回True。使用Haskeys屬性,可以遍曆完整的Request.Cookies集合,從而獲得所有cookie的列表及它們的值。

For Each objItem In Request.Cookies
If Request.Cookies(objItem).HasKey Then
‘Use another For Each to iterate all subkeys
For Each objItemKey in Request.Cookies(objItem)
Response.Write objItem & “(“ & objItemKey & “) = “_
& Request.Cookies(objItem)(objItemKey) & “<BR>”
Next
Else
‘Print out the cookie string as normal
Response.Write objItem & “ = ”& Request.Cookies(objItem) & “<BR>”
End If
Next

這非常類似於前面的從Request.Form集合中提取多個值的複雜代碼。但是這裡可以使用Haskeys屬性來判別每個條目是否為一個集合。而在Form例子裡,必須查詢Request.Form(item_name).Count屬性,這是因為Form集合(和所有的除cookie外的其他集合)成員不可能是真正的集合。ASP只是做了“幕後”的工作,得到了每個多條目集合的值。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.