Asp.net中Cookie簡明參考 (轉)
中Cookie簡明參考:namespace prefix = o ns = "urn:schemas--com::office" />
一 寫入Cookie
1. Name 和 Value 屬性由設定,預設值都是空引用。
2. ain屬性的預設值為當前URL的域名部分,不管發出這個cookie的頁面在哪個目錄下的。
例如,"> 頁面中發出一個cookie,Domain屬性預設就是 ,可以由程式設定此屬性為需要的值。
3. Path屬性的預設值是根目錄,即 ”/” ,不管發出這個cookie的頁面在哪個目錄下的。可以由程式設定為一定的路徑來進一步限制此cookie的作用範圍。
4. Expires 屬性,這個屬性設定此Cook的過期日期和時間。如果沒有設定 Cookie 的有效期(預設設定),也可以建立 Cookie,但它不會儲存到的上,而是會成為使用者會話資訊的一部分,關閉或會話超時這個Cookie即會消失,這種Cookie稱作非永久性的 Cookie。存放SessionID的Cookie就是這樣的一種Cookie,它不存放在硬碟上,只存在之中。
5. 將要發出的Cookie附加到Response的屬性中就可以將此Cookie傳送到客戶端:Reponse.Cookies.Add(Cookie)
6. Domain屬性+Path屬性 相同的所有Cookie 在客戶端都存在一箇中,Cookie之間以”*”分割。每個Cookie的第一行是 Cookie 的名稱,第二行是值,第三行是Domain屬性+Path屬性組成的一個字串,指示此Cookie的作用域,其餘各行則包含 Cookie 的日常處理資訊,例如過期日期和時間。Cookie 中還有一個簡單的校驗和,如果更改 Cookie 名稱或值的長度,瀏覽器就會檢測到修改並刪除該 Cookie。
二 讀取Cookie
1. Request.Cookies 屬性中包含了客戶端傳送到的所有Cookie的集合,只有在請求URL的作用範圍內的Cookie才會被瀏覽器連同Http請求一起傳送到伺服器。
2. Name 和 Value 屬性和子鍵的值很容易讀到。
3. Domain 和 Path 屬性 是讀不到的,讀Domain屬性永遠是””,讀Path屬性永遠是 ”/” 。本來這些屬性的用途很有限。如果您的頁面與 Cookie 不在相同的域,您根本就不會在頁面的位置接收到該 Cookie。
4. 也無法讀取Cookie 的過期日期和時間。事實上,當瀏覽器向伺服器傳送 Cookie 資訊時,瀏覽器並未將過期資訊包括在內。您可以讀取 Expires 屬性,但總是返回為零的日期/時間值。Expires 屬性的主要作用是幫助瀏覽器有關 Cookie 儲存的日常管理。從伺服器的角度來看,Cookie 要麼存在要麼不存在,所以對伺服器而言,有效期並不是有用的資訊。
所以,瀏覽器在傳送 Cookie 時並不提供此資訊。如果您需要 Cookie 的過期日期,就必須重新設定。
三 修改和刪除 Cookie
1. 其實你不能直接修改一個Cookie,是建立一個同名的 Cookie,並把該 Cookie 傳送到瀏覽器,覆蓋客戶機上舊的 Cookie。
2. 同樣您無法直接將其刪除一個Cookie,可以透過修改一個Cookie達到讓瀏覽器幫你刪除Cookie的目的,修改Cookie的有效期為過去的某個時間,當瀏覽器檢查 Cookie 的有效期時,就會刪除這個已過期的 Cookie。
四 Cookie同Session的關係
1. 中Session可以採用cookie 和cookieless兩種方法,cookieless方式是將SessionID放在URL中在客戶端和服務端中來回傳遞,不需要用到cookie,在這裡不討論這個方式。
2. 在asp.net中客戶第一次請求一個URL,伺服器給這個客戶生成一個SessionID,並以非永久性的 Cookie傳送到客戶端。
3. 非永久性的 Cookie只有在瀏覽器關閉後這些Cookie才隨之消失,Session的超時判斷是這樣的過程:
3.1 第一次客戶端訪問伺服器,會得到一個SessionID,以非永久性的 Cookie傳送到客戶端。
3.2 在這個瀏覽器關閉之前訪問這個URL,瀏覽器都會把這個SessionID傳送到服務端,服務端根據SessionID來維持對應此客戶的服務端的各種狀態(就是Session中儲存的各種值),在應用程式中可以對這些Session進行操作。
3.3 服務端維護此SessionID的過期時間,IIS中可以設定Session的超時時間。每次請求都將導致服務端將此SessioID的過期時間延長一個設定的超時時間。
3.4 當服務端發現某個SessionID已經過時,即某個客戶已經在設定的超時時間內沒有再次訪問此站點,即將此SessionID,連同跟此SessionID相關的所有Session變數刪除。
3.5 客戶端的瀏覽器未關閉前,並不知道服務端已經將這個SessionID刪除,客戶端依舊傳送此SessionID的cookie到服務端,只是此時的服務端已經不認識此SessionID了,會將此使用者當做新使用者,再次分配一個新的SessionID。
參考:
ASP.NET 中 Cookie 的基本知識()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-958918/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JAVA期末簡答題參考Java
- IOC注入反轉思路-僅供參考
- ASP.NET之CookieASP.NETCookie
- TIDB 考試 參考TiDB
- OSI參考模型和TCP/IP參考模型模型TCP
- javamail參考JavaAI
- git參考手冊--文字說明+git速查命令表(圖片)Git
- 【PyQt5】QComboBox 樣式表參考(轉載)QT
- [PyQt5] QComboBox 樣式表參考(轉載)QT
- 簡單語法解析器實現參考
- OSI參考模型詳解之玩轉傳輸層模型
- 簡單sql欄位解析器實現參考SQL
- WebApiClient效能參考WebAPIclient
- OSI參考模型模型
- cookie 簡介Cookie
- Cookie簡介Cookie
- 【Datapump】Oracle資料泵遷移資料命令參考(expdp/impdp說明)Oracle
- 模擬考試參考程式碼
- Blender參考API用法API
- LVS - ipvsadm命令參考
- Oracle ASMCMD命令參考OracleASM
- SQL優化參考SQL優化
- openGauss ODBC介面參考
- Latex—參考文獻
- CloudBeaver 參考架構Cloud架構
- 參考文獻合集
- echarts markLine參考線Echarts
- PyQtGraph繪圖參考QT繪圖
- oracle 參考資料Oracle
- 在容器中執行UI自動化參考UI
- RedHat Advance Server上安裝Oracle 9204 RAC參考手冊(轉)RedhatServerOracle
- 參考Vue-router, 實現一個簡單的前端路由Vue前端路由
- DotNetCore系列:在ASP.NET Core 3.1中獲取xml格式的介面入參並轉化為jsonNetCoreASP.NETXMLJSON
- ASP.NET Core Authentication系列(三)Cookie選項ASP.NETCookie
- spring-boot參考文章Springboot
- Spring Boot 參考指南(Hazelcast)Spring BootAST
- HTML標籤參考(一)HTML
- Elasticsearch 參考指南(介紹)Elasticsearch
- http http headers參考文件HTTPHeader