asp.net cookie說明

來源:互聯網
上載者:User

cookie 是一小段文本資訊,伴隨著使用者請求和頁面在 網頁伺服器和瀏覽器之間傳遞。 cookie 包含每次使用者訪問網站時 web 應用程式都可以讀取的資訊。

本主題包括:

方案

背景

程式碼範例

類參考

其他資源

新增功能

 方案
--------------------------------------------------------------------------------

cookie 提供了一種在 web 應用程式中儲存使用者特定資訊的方法。 例如,當使用者訪問您的網站時,您可以使用 cookie 儲存使用者喜好設定或其他資訊。 當該使用者再次訪問您的網站時,應用程式便可以檢索以前儲存的資訊。

返回頁首

 背景
--------------------------------------------------------------------------------

cookie 是一小段文本資訊,伴隨著使用者請求和頁面在 網頁伺服器和瀏覽器之間傳遞。 cookie 包含每次使用者訪問網站時 web 應用程式都可以讀取的資訊。

例如,如果在使用者請求網站中的頁面時應用程式發送給該使用者的不僅僅是一個頁面,還有一個包含日期和時間的 cookie,使用者的瀏覽器在獲得頁面的同時還獲得了該 cookie,並將它儲存在使用者硬碟上的某個檔案夾中。

以後,如果該使用者再次請求您網站中的頁面,當該使用者輸入 url 時,瀏覽器便會在本地硬碟上尋找與該 url 關聯的 cookie。 如果該 cookie 存在,瀏覽器便將該 cookie 與頁請求一起發送到您的網站。 然後,應用程式便可以確定該使用者上次訪問網站的日期和時間。 您可以使用這些資訊向使用者顯示一條訊息,也可以檢查到期日。

cookie 與網站關聯,而不是與特定的頁面關聯。因此,無論使用者請求網站中的哪一個頁面,瀏覽器和伺服器都將交換 cookie 資訊。 使用者訪問不同網站時,各個網站都可能會向使用者的瀏覽器發送一個 cookie;瀏覽器會分別儲存所有 cookie。

cookie 協助網站儲存有關訪問者的資訊。 一般來說,cookie 是一種保持 web 應用程式連續性(即執行狀態管理)的方法。 除短暫的實際交換資訊的時間外,瀏覽器和 網頁伺服器間都是中斷連線的。 對於使用者向 網頁伺服器發出的每個請求,網頁伺服器都會單獨處理。 但是在很多情況下,網頁伺服器在使用者請求頁時識別出使用者會十分有用。 例如,購物網站上的 網頁伺服器跟蹤每位購物者,這樣網站就可以管理購物車和其他的使用者特定資訊。 因此,cookie 可以作為一種名片,提供相關的標識資訊輔助應用程式確定如何繼續執行。

使用 cookie 能夠達到多種目的,所有這些目的都是為了協助網站記住使用者。 例如,一個實施民意測驗的網站可以簡單地將 cookie 作為一個 boolean 值,用它來指示使用者的瀏覽器是否已參與了投票,這樣使用者便無法進行第二次投票。 要求使用者登入的網站則可以通過 cookie 來記錄使用者已經登入,這樣使用者就不必每次都輸入憑據。

cookie 的限制
大多數瀏覽器支援最大為 4096 位元組的 cookie。 由於這個小限制的存在,cookie 的最佳用途是儲存少量資料,或者儲存使用者 id 之類的標識符。 使用者 id 隨後便可用於標識使用者,以及從資料庫教程或其他資料來源中讀取使用者資訊。 (有關儲存使用者資訊安全建議的資訊,請參見下面的“cookie 和安全性”一節。)

瀏覽器還限制網站可以在使用者電腦上儲存的 cookie 的數量。 大多數瀏覽器只允許每個網站儲存 20 個 cookie;如果嘗試儲存更多 cookie,則最舊的 cookie 便會被丟棄。 有些瀏覽器還會對它們將接受的來自所有網站的 cookie 總數作出絕對限制,通常為 300 個。

您可能遇到的 cookie 限制是使用者可以將其瀏覽器設定為拒絕接受 cookie。 如果定義一個 p3p 隱私權原則,並將其放置在網站的根目錄中,則更多的瀏覽器將接受您網站的 cookie。 但是,您可能會不得不完全放棄 cookie,而通過其他機制來儲存使用者特定的資訊。 儲存使用者資訊的常用方法是工作階段狀態,但工作階段狀態依賴於 cookie,這一點在後面的“cookie 和工作階段狀態”一節中說明。

 說明 
有關 web 應用程式中的狀態管理和用於儲存資訊的選項的更多資訊,請參見 asp教程.net 狀態管理概述 和 asp.net教程 狀態管理建議。
 

雖然 cookie 在應用程式中非常有用,但應用程式不應依賴於能夠儲存 cookie。 不要使用 cookie 支援關鍵功能。 如果應用程式必須依賴於 cookie,則可以通過測試確定瀏覽器是否將接受 cookie。 請參見本主題後面的“檢查瀏覽器是否接受 cookie”一節。

編寫 cookie
瀏覽器負責系統管理使用者系統上的 cookie。 cookie 通過 httpresponse 對象發送到瀏覽器,該對象公開稱為 cookies 的集合。 可以將 httpresponse 對象作為 page 類的 response 屬性來訪問。 要發送給瀏覽器的所有 cookie 都必須添加到此集合中。 建立 cookie 時,需要指定 name 和 value。 每個 cookie 必須有一個唯一的名稱,以便以後從瀏覽器讀取 cookie 時可以識別它。 由於 cookie 按名稱儲存,因此用相同的名稱命名兩個 cookie 會導致其中一個 cookie 被覆蓋。

還可以設定 cookie 的到期日和時間。 使用者訪問編寫 cookie 的網站時,瀏覽器將刪除到期的 cookie。 只要應用程式認為 cookie 值有效,就應將 cookie 的有效期間設定為這一段時間。 對於永不到期的 cookie,可將到期日設定為從現在起 50 年。

 說明 
使用者可隨時清除其電腦上的 cookie。 即便儲存的 cookie 距到期日還有很長時間,但使用者還是可以決定刪除所有 cookie,清除 cookie 中儲存的所有設定。
 

如果沒有設定 cookie 的有效期間,仍會建立 cookie,但不會將其儲存在使用者的硬碟上。 而會將 cookie 作為使用者會話資訊的一部分進行維護。 當使用者關閉瀏覽器時,cookie 便會被丟棄。 這種非永久性 cookie 很適合用來儲存只需短時間儲存的資訊,或者儲存由於安全原因不應該寫入用戶端電腦上的磁碟的資訊。 例如,如果使用者在使用一台公用電腦,而您不希望將 cookie 寫入該電腦的磁碟中,這時就可以使用非永久性 cookie。

 

下面的程式碼範例示範一個名為 usersettings 的 cookie,並設定其 font 和 color 子項的值。 它還將到期時間設定為明天。

response.cookies["usersettings"]["font"] = "arial";response.cookies["usersettings"]["color"] = "blue";response.cookies["usersettings"].expires = datetime.now.adddays(1d);

通過建立 httpcookie 對象的執行個體編寫 cookie
建立 httpcookie 類型的對象並為它分配名稱。

為 cookie 的子項賦值並設定所有 cookie 屬性。

將該 cookie 添加到 cookies 集合中。

下面的程式碼範例示範一個名為 mycookie 的 httpcookie 對象的執行個體,該執行個體表示一個名為 usersettings 的 cookie。

httpcookie mycookie = new httpcookie("usersettings");mycookie["font"] = "arial";mycookie["color"] = "blue";mycookie.expires = datetime.now.adddays(1d);response.cookies.add(mycookie);

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.