2007-01-24 一 寫入Cookie 1.Cookie 的name 和value 屬性有程序設定,默認值為空值。 2.domain屬性的默認值為當前URL的域名部分,而不管當前發(fā)出這個cookie的頁面是在哪一個目錄下。 例如,http://www.kent.com/application1/login.aspx 頁面中發(fā)出一個cookie,Domain屬性缺省就是www.kent.com ,可以由程序設置此屬性為需要的值。 3. Path屬性的默認值是根目錄,即 ”/” ,不管發(fā)出這個cookie的頁面在哪個目錄下的??梢杂沙绦蛟O置為一定的路徑來進一步限制此cookie的作用范圍。 4. Expires 屬性,這個屬性設置此Cookie 的過期日期和時間。如果沒有設置 Cookie 的有效期(默認設置),也可以創(chuàng)建 Cookie,但它不會保存到用戶的硬盤上,而是會成為用戶會話信息的一部分,關閉瀏覽器或會話超時這個Cookie即會消失,這種Cookie稱作非永久性的 Cookie。存放SessionID的Cookie就是這樣的一種Cookie,它不存放在硬盤上,只存在內(nèi)存之中。 5. 將要發(fā)出的Cookie附加到Response的Cookies屬性中就可以將此Cookie發(fā)送到客戶端:Reponse.Cookies.Add(Cookie) 6. Domain屬性+Path屬性 相同的所有Cookie 在客戶端都存放在一個文件中,Cookie之間以”*”分割。每個Cookie的第一行是 Cookie 的名稱,第二行是值,第三行是Domain屬性+Path屬性組成的一個字符串,指示此Cookie的作用域,其余各行則包含 Cookie 的日常處理信息,例如過期日期和時間。Cookie 中還有一個簡單的校驗和,如果更改 Cookie 名稱或值的長度,瀏覽器就會檢測到修改并刪除該 Cookie。 二 讀取Cookie 1. Request.Cookies 屬性中包含了客戶端發(fā)送到服務器的所有Cookie的集合,只有在請求URL的作用范圍內(nèi)的Cookie才會被瀏覽器連同Http請求一起發(fā)送到服務器。 2. Name 和 Value 屬性和子鍵的值很容易讀到。 3. Domain 和 Path 屬性 是讀不到的,讀Domain屬性永遠是””,讀Path屬性永遠是 ”/” 。本來這些屬性的用途很有限。如果您的頁面與 Cookie 不在相同的域,您根本就不會在頁面的位置接收到該 Cookie。 4. 也無法讀取Cookie 的過期日期和時間。事實上,當瀏覽器向服務器發(fā)送 Cookie 信息時,瀏覽器并未將過期信息包括在內(nèi)。您可以讀取 Expires 屬性,但總是返回為零的日期/時間值。Expires 屬性的主要作用是幫助瀏覽器執(zhí)行有關 Cookie 保存的日常管理。從服務器的角度來看,Cookie 要么存在要么不存在,所以對服務器而言,有效期并不是有用的信息。 所以,瀏覽器在發(fā)送 Cookie 時并不提供此信息。如果您需要 Cookie 的過期日期,就必須重新設置。 三 修改和刪除 Cookie 1. 其實你不能直接修改一個Cookie,而是創(chuàng)建一個同名的 Cookie,并把該 Cookie 發(fā)送到瀏覽器,覆蓋客戶機上舊的 Cookie。 2. 同樣您無法直接將其刪除一個Cookie,可以通過修改一個Cookie達到讓瀏覽器幫你刪除Cookie的目的,修改Cookie的有效期為過去的某個時間,當瀏覽器檢查 Cookie 的有效期時,就會刪除這個已過期的 Cookie。 四 Cookie同Session的關系 1. asp.net中Session可以采用cookie 和cookieless兩種方法,cookieless方式是將SessionID放在URL中在客戶端和服務端中來回傳遞,不需要用到cookie,在這里不討論這個方式。 2. 在asp.net中客戶第一次請求一個URL,服務器給這個客戶生成一個SessionID,并以非永久性的 Cookie發(fā)送到客戶端。 3. 非永久性的 Cookie只有在瀏覽器關閉后這些Cookie才隨之消失,Session的超時判斷是這樣的過程: 3.1 第一次客戶端訪問服務器,會得到一個SessionID,以非永久性的 Cookie發(fā)送到客戶端。 3.2 在這個瀏覽器關閉之前訪問這個URL,瀏覽器都會把這個SessionID發(fā)送到服務端,服務端根據(jù)SessionID來維持對應此客戶的服務端的各種狀態(tài)(就是Session中保存的各種值),在web應用程序中可以對這些Session進行操作。 3.3 服務端維護此SessionID的過期時間,IIS中可以設置Session的超時時間。每次請求都將導致服務端將此SessioID的過期時間延長一個設置的超時時間。 3.4 當服務端發(fā)現(xiàn)某個SessionID已經(jīng)過時,即某個客戶已經(jīng)在設置的超時時間內(nèi)沒有再次訪問此站點,即將此SessionID,連同跟此SessionID相關的所有Session變量刪除。 3.5 客戶端的瀏覽器未關閉前,并不知道服務端已經(jīng)將這個SessionID刪除,客戶端依舊發(fā)送此SessionID的cookie到服務端,只是此時的服務端已經(jīng)不認識此SessionID了,會將此用戶當做新用戶,再次分配一個新的SessionID。 四.View State 這是一個新出來的東東,用法和Session一樣,他的主要用途是記錄Web Control的狀態(tài)。雖然是新出來的,但是和Application、Session的用法沒有什么區(qū)別,所以也不想詳細講解了。 State["DropLoadIndex"] = 0 ; 基本用法如上:),但是請記住,他保存在的信息只能在一個aspx文件中使用。出去后,這個就沒有用了,因為他的用途只是保存WEB控件的狀態(tài)。 |
聯(lián)系客服