一、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 //指定到使用者指定的頁面 }}