一。Cookies簡介
想必做.NET的人都遇到過Cookies這個名詞,沒有用過也至少聽過吧!(估計這種情形特別特別的少!~)。其實,說到Cookies它也有許多別的叫法,姑且叫做別名吧,比如說 HTTP Cookie,Web Cookie,Brower Cookie,Session Cookie等等,名字不一樣,其實指的都是同一個東東,整所謂換湯不換葯!~。就是這個理。
Cookies主要的作用是為了存儲少量數據(注意 是少量),主要是當服務器和瀏覽器之間不在連接的時候,它會自動的保存一些訪問者的信息。還是特別需要強調一下的時候,cookies是一個存儲少量數據類型的,而且被存儲在客戶端上面,比如說 瀏覽器里面。
比如下面2張圖片:
初始化Cookie
上面2張圖很淺顯的說明了cookie的使用方式。
二。Cookies的使用范圍及優勢
說到Cookies的使用范圍,我們都特別的熟悉,比如權限、session的用戶名、用戶購物時的購物車等等,這些都在我們平常的開發中很常見很常見的功能。當然,不止這些,你還可能用在其他的方面。
我們需要注意的是,Cookies並不僅僅只是存儲數據,它另一方面的功能是能把數據從一個頁面傳遞到另外一個頁面。
優勢:
1.簡單使用
2.對瀏覽器會保護好它發送的數據(也就是有一定的加密,但強度不強)
3.如果幾個站點都有cookie的話,那么瀏覽器會自定對他們進行安排
三、Cookies的安全性及在本地磁盤的位置
對於安全性這個問題,其實Cookies是顯而易見的,就是它存在不安全性。因為Cookies記錄了一些用戶操作的痕跡,所以一些黑客啊就能通過獲取用戶的訪問權限進行數據的竊取或破壞,從這里來說Cookie有它的不友好的一面。當然,Cookies它不不是一種軟件,所以它也就不能像一些可執行文件一樣進行執行,也不能在用戶的cookies里面攜帶病毒。
雖然,cookies里面有不安全的成分在里面,但不能否認的是cookies帶給我們的開發者的好處。比如,登入一個網站后,保存用戶名,然后能在各個頁面進行調用,多么的有用?
那Cookie在本地磁盤哪里呢?
首先你需要把勾選“顯示所有文件及文件夾”
然后瀏覽器到C:\Users\【用戶名】\AppData\Roaming\Microsoft\Windows\Cookies 中的當前用戶,打開cookies文件夾 如下:
四。創建和讀取Cookies的方法
4.1 通過HTTPCookies類進行創建
創建Cookies:
HttpCookie StudentCookies = new HttpCookie("StudentCookies"); StudentCookies.Value = TextBox1.Text; StudentCookies.Expires = DateTime.Now.AddHours(1); Response.Cookies.Add(StudentCookies);
讀取Cookies:
string roll = Request.Cookies["StudentCookies"].Value;
4.2直接通過Response進行創建
創建Cookies:
Response.Cookies["StudentCookies"].Value = TextBox1.Text; Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);
讀取Cookies:
string roll = Request.Cookies["StudentCookies"].Value;
4.3多值的存儲
創建Cookies:
Response.Cookies["StudentCookies"]["RollNumber"] = TextBox1.Text; Response.Cookies["StudentCookies"]["FirstName"] = "Abhimanyu"; Response.Cookies["StudentCookies"]["MiddleName"] = "Kumar"; Response.Cookies["StudentCookies"]["LastName"] = "Vatsa"; Response.Cookies["StudentCookies"]["TotalMarks"] = "499"; Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);
讀取Cookies:
string roll; roll = Request.Cookies["StudentCookies"]["RollNumber"]; roll = roll + " " + Request.Cookies["StudentCookies"]["FirstName"]; roll = roll + " " + Request.Cookies["StudentCookies"]["MiddleName"]; roll = roll + " " + Request.Cookies["StudentCookies"]["LastName"]; roll = roll + " " + Request.Cookies["StudentCookies"]["TotalMarks"]; Label1.Text = roll;
五。刪除Cookies的方法
刪除Cookies的實質是修改它的過期時間,代碼如下:
if (Request.Cookies["StudentCookies"] != null) { Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(-1); Response.Redirect("Result.aspx"); //to refresh the page }
六。HTTPCookie的類包含了所有cookies的集合
對HttpCookie而言,我們不需要提供額外的命名空間,因為HttpCookie類繼承自System.Web命名空間。通過HttpCookie,可以使得我們用cookie的時候不需要使用Response和Request,比如4.2和4.3。
HttpCooki類有一些屬性,如下,都很好理解的:
Domain
: Cookie的域Expires
: Cookie的過期日期HasKeys
: Cookie是否有子鍵Name
: Cookie的名字Path
: Cookie的虛擬路徑Secure
: 是否進行安全的連接Value
: Cookie的值Values
:多個值
七。Cookie需要注意的地方
1.Cookies的大小是 4096bytes
2.在單個網站最多只能有20個cookies,如果你超過了20個,那么對不起,網站會自動幫你刪除老的cookie。
3.終端用戶有權利在瀏覽器上關閉cookie的使用。
如圖(我的是firfox瀏覽器):
有的時候,終端用戶會在瀏覽器上禁用cookie,更極端的是 有一些瀏覽器上面沒有這個cookie功能。在這樣的例子下面,你在開發的時候,在使用cookie的時候,你需要提前進行檢查一下。如果當前瀏覽器不支持cookie,你還得需要進行做其他操作。
下面的一段代碼就是用來判斷是否當前瀏覽器支持cookie的:
protected void Page_Load(object sender, EventArgs e) { if (Request.Browser.Cookies) { //支持Cookie } else { //不支持 cookies //指定到用戶指定的頁面 } }