Asp.Net操作Cookie總結

一、什么是Cookie?

Cookie是存儲在客戶端文件系統的文本文件或客戶端瀏覽器對話的內存中的少量數據。它主要用來跟蹤數據設置,例如:當我們要訪問一個網站網頁的時候,用戶請求網頁時,應用程序可能會首先檢查此用戶是否已經登錄該網站,我們此時可以通過Cookie獲取用戶信息,判斷是否讓該用戶繼續訪問該網站,比較典型的時一個電商網站的購物車采用Cookie來記錄當前用戶的購物情況。

二、Cookie的工作機制

具體來說cookie機制采用的是在客戶端保持狀態的方案。它是在用戶端的會話狀態的存貯機制,他需要用戶打開客戶端的cookie支持。cookie的作用就是為了解決HTTP協議無狀態的缺陷所作的努力。

正統的cookie分發是通過擴展HTTP協議來實現的,服務器通過在HTTP的響應頭中加上一行特殊的指示以提示瀏覽器按照指示生成相應的cookie。然而純粹的客戶端腳本如JavaScript也可以生成cookie。而cookie的使用是由瀏覽器按照一定的原則在后臺自動發送給服務器的。瀏覽器檢查所有存儲的cookie,如果某個cookie所聲明的作用范圍大于等于將要請求的資源所在的位置,則把該cookie附在請求資源的HTTP請求頭上發送給服務器。

cookie的內容主要包括:名字,值,過期時間,路徑和域。路徑與域一起構成cookie的作用范圍。若不設置過期時間,則表示這個cookie的生命期為瀏覽器會話期間,關閉瀏覽器窗口,cookie就消失。這種生命期為瀏覽器會話期的cookie被稱為會話cookie。會話cookie一般不存儲在硬盤上而是保存在內存里,當然這種行為并不是規范規定的。若設置了過期時間,瀏覽器就會把cookie保存到硬盤上,關閉后再次打開瀏覽器,這些cookie仍然有效直到超過設定的過期時間。存儲在硬盤上的cookie可以在不同的瀏覽器進程間共享,比如兩個IE窗口。而對于保存在內存里的cookie,不同的瀏覽器有不同的處理方式。

三、Cookie的具體用法

1、記錄Cookie

HttpCookie cookie=new HttpCookie("user");//創建一個名稱為user的cookie對象

cookie["username"]="xiaoming";//給cookie對象賦值

cookie["password"]="111111";//給cookie對象賦值

cookie.Expires=DateTime.Now.AddHours(2);//設定cookie有效期限 從當前開始2小時后過期

2、將Cookie添加到內部的Cookie集合。Cookie集合中所有的Cookie均通過Http輸出流在Set-Cookie頭中發送到客戶端。

Response.AppendCookie(Cookie);

3、讀取Cookie

HttpCookie cookie=Request["user"];

if(cookie!=null)

{

Response.Write("cookie不存在");

}

else

{

string username=cookie["username"];

string password=cookie["password"];

}

4、刪除Cookie

由于Cookie存在與客戶端的計算機中,無法直接將其刪除,但是可以采用讓瀏覽器來刪除客戶端的Cookie,讓其變為過期的Cookie,這時候瀏覽器

檢查的時候會刪除過期的Cookie。

cookie.Expires=DateTime.Now.AddHours(-1);

5、如何實現跨越讀取Cookie

默認情況下,Cookie與特定的域相關聯,不同域之間的Cookie是無法共享的,如果你的站點有子域(例如:demo.com、 a.demo.com、b.demo.com)

則可以把Cookie同特定的子域相關聯,實現共享Cookie

比如:

cookie.Domain="a.demo.com";

cookie.Domain="b.demo.com";

這樣Cookie就可以用于主域(demo.com)、a.demo.com、b.demo.com等多個子域了。

四、Cookie的優點和缺點

1.優點

1、可配置到期規則 Cookie 可以在瀏覽器會話結束時到期,或者可以在客戶端計算機上無限期存在,這取決于客戶端的到期規則。

2、不需要任何服務器資源 Cookie 存儲在客戶端并在發送后由服務器讀取。

3、簡單性 Cookie 是一種基于文本的輕量結構,包含簡單的鍵值對。

4、數據持久性 雖然客戶端計算機上 Cookie 的持續時間取決于客戶端上的 Cookie 過期處理和用戶干預,Cookie 通常是客戶端上持續時間最長的數據保留形式。

2.缺點

大小受到限制 大多數瀏覽器對 Cookie 的大小有 4096 字節的限制,盡管在當今新的瀏覽器和客戶端設備版本中,支持 8192 字節的 Cookie 大小已愈發常見。

用戶配置為禁用 有些用戶禁用了瀏覽器或客戶端設備接收 Cookie 的能力,因此限制了這一功能。潛在的安全風險 Cookie 可能會被篡改。用戶可能會操縱其計算機上的 Cookie,這意味著會對安全性造成潛在風險或者導致依賴于 Cookie 的應用程序失敗。另外,雖然 Cookie 只能被將它們發送到客戶端的域訪問,歷史上黑客已經發現從用戶計算機上的其他域訪問 Cookie 的方法。您可以手動加密和解密 Cookie,但這需要額外的編碼,并且因為加密和解密需要耗費一定的時間而影響應用程序的性能。

注意:Cookie 通常用于為已知用戶自定義內容的個性化情況。在大多數此類情況中,Cookie 是作為“標識”而不是“身份驗證”。因此,通常保護用于標識的 Cookie 的方法是在 Cookie 中存儲用戶名、帳戶名或唯一用戶 ID(例如 GUID),然后用以訪問站點的用戶個性化結構中的信息。

歡迎關注我的公眾號(同步更新文章):DoNet技術分享平臺

原文

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/272792.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/272792.shtml
英文地址,請注明出處:http://en.pswp.cn/news/272792.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java GUI怎么輸入_在Swing中創建Java GUI以進行表單輸入

好吧,我已經瀏覽了整個互聯網,但卻未能找到這個問題的答案,所以也許有人可以提供一些見解.我正在開發一個相對簡單的Java應用程序,它將取代目前用于系統訪問請求的Word文檔.它旨在允許表單輸入新的員工雇用信息 – 名稱,所需的訪問權限等.所以這是我的問題.嘗試使用所有文本字段…

Net中Session的用法

一、什么是Session?簡單來說,就是用戶與網站服務器建立的一個連接,服務器分配給一個編號。當一臺WWW服務器運行時,可能有若干用戶正在瀏覽運行在這臺服務器上的網站。當用戶首次與這臺WWW服務器創建連接的時候,它就和這…

關于Json的總結

一、什么是Json?JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。它使得人們很容易的進行閱讀和編寫。同時也方便了機器進行解析和生成。它是基于 JavaScript Programming Language , Standard ECMA-262 3rd Edition - December 1999的一個子集。 JS…

java 整數溢出檢測,Java如何處理整數下溢和溢出以及如何檢查它?

How does Java handle integer underflows and overflows?Leading on from that, how would you check/test that this is occurring?解決方案If it overflows, it goes back to the minimum value and continues from there. If it underflows, it goes back to the maximum…

console 程序隨系統啟動及隱藏當前程序窗口

應業務需求,程序需要與系統啟動而自動運行,故加入以下代碼,保存成 .bat文件 ,雙擊執行即可 reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run" /v HuazhuPushRecord /t reg_sz /d "your…

Linq用法筆記

一、什么是Linq?LINQ即Language Integrated Query(語言集成查詢),LINQ是集成到C#和Visual Basic.NET這些語言中用于提供查詢數據能力的一個新特性。LINQ是一種用來進行數據訪問的編程模型,Linq可以用相同的語法訪問不同的數據源,比如xml、數…

用例圖練習

轉載于:https://www.cnblogs.com/fzuyzy/p/4925246.html

java excel row遍歷空_Java poi讀取,寫入Excel,處理row和cell可能為空的情況

首先需要導入包import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.poifs.filesystem.NPOIFSFileSystem;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;然后寫方法&a…

JQuery常用選擇器總結

作為網站開發者來說,不可避免的需要和頁面打交道,很多時候都需要去操作一些頁面上的元素,掌握常用的Jquery選擇器是十分有必要的。現從網上整理一些常用的Jquery選擇器,希望能給大家帶來一些開發上的便利。一、基本選擇器&#xf…

java 常量 內存分配_Java內存分配之堆、棧和常量池

寄存器:最快的存儲區,位于不同于其他存儲區的地方——處理器內部。寄存器的數量極其有限,所以寄存器由編譯器根據需求 進行分配。你不能直接控制,也不能在程序中感覺到寄存器存在的任何跡象。棧:存放基本類型的數據和對…

三種SQLServer分頁查詢語句筆記

作為程序員來說,與數據庫打交道是十分頻繁的分頁查詢是一個開發者必須掌握的基本知識點,目前整理了下面三種SQLServer分頁查詢語句的寫法,僅供參考。一、Top Not IN 方式(查詢靠前的數據較快)語法格式:sele…

sqlserver2008r2安裝

轉載于:https://www.cnblogs.com/sprinng/p/4932739.html

JQuery七個常犯的錯誤

1、 亂用選擇器JQuery選擇器調用代價很大,反復調用效率更低。應采用緩存對象的方法或采用鏈式調用的方式。//錯誤的寫法$("#button").click(function(){ $(#list li).addClass(strong); $(#list li).css(color,red);});//正確的寫法$("#button…

java流讀取xml_使用FileInputStream(用于Java)讀取XML文件?

這是交易.對于我的項目,我必須使用Java和XStream對隨機樹進行序列化和反序列化.我的老師制作了Tree / RandomTree算法,所以我不必擔心.我不知道該怎么做是這樣的:我使用FileInputStream來讀/寫我序列化和反序列化的xml文件,但是當我反序列化時,我不知道用于讀取文件…

后臺尋路系統的大體思路與流程

總的思路就是: 1, 通過前臺unity的navigation的的接口: 獲得頂點和三角形集合數據 2, 將前臺的mesh數據轉換成標準的obj格式數據 3. 強obj mesh數據經過一系列轉換和優化, 生成recastnavigation插件尋路模塊detour需要的導航數據 故制作了工具MakeNavmeshData生成detour需要的…

關于WCF、WebAPI、WCFREST、WebService之間的區別總結

在.net平臺下,有大量的技術讓你創建一個HTTP服務,像Web Service,WCF,現在又出了Web API。在.net平臺下,你有很多的選擇來構建一個HTTP Services。我分享一下我對Web Service、WCF以及Web API的看法。一、Web Service1、…

java 程序是由什么組成的 java_從零開始的JAVA -2. java程序的構成及命名規則

1.public classYD2.{3. public static voidmain (string args[ ])4. {5. System.out.println("我是一名學習JAVA的新人!");6. }7.}第一行 public 代表這是一個公共類(可省略) class 是聲明一個類,在他后面的YD 就是類名(類名可以隨意寫)第二行…

你應該知道的jQuery技巧【收藏】

jQuery的存在,讓學習前端開發的人感到前端越來越容易入門了,用簡單的幾行代碼就可以實現需求,但是,你真的會用jQuery么,當代碼運行 后無法看到自己預期的效果,是不是覺得jQuery出了問題,其實&am…

LINQ表達式用法整理

收集一些Linq表達式中的一些比較常用的寫法,希望能給大家工作當中帶來一些便利。1. Where子句條件過濾結果集型(集合數據使用這種,譬如數組、列表數據,同樣適用于Datatable等多列數據集)類SQL語句的寫法,對…

Eclipse is running in a JRE, but a JDK is required 解決方法(轉)

轉自:http://comeonbabye.iteye.com/blog/1186239 安裝Maven后每次啟動出現警告信息: Eclipse is running in a JRE, but a JDK is requiredSome Maven plugins may not work when importing projects or updating source folders. 分兩步解決問題: 1. 檢查Eclipse正…