譯(Beginner's Guide To ASP.NET Cookies)
原文來自于 http://www.codeproject.com/KB/aspnet/Beginners_Cookies.aspx
Asp.net Cookies 新手指南
目錄
?介紹
?什么是Cookies?
?怎樣啟動(dòng)Cookies?
?Cookies 的優(yōu)勢(shì)
?Cookies 的劣勢(shì)
?如何建立Cookies?
?怎樣從Cookies 中讀取數(shù)據(jù)?
?什么是持久性Cookies 和非持久性Cookies?
?Cookies 存儲(chǔ)在本地驅(qū)動(dòng)器的那里?
?怎樣在刪除未過期的技久性cookies?
?如何控制Cookies的范圍?
?Cookie Munging
- 什么是Cookie Munging?
- 我們?yōu)槭裁丛贏sp.net 中用Cookie Munging?
- Cookie Munging 如何工作?
- 如何實(shí)現(xiàn)Cookie Munging?
?在瀏覽器中怎樣配置Cookies?
介紹
首先要感謝閱讀我以前所有文檔并贊成我的讀者。Wow ,我的偉大支持者就來自于你們。再一次感謝Sean Ewingto開始與新手起步web 開發(fā)文章中的一個(gè)非常奇妙的想法。我以前也為初學(xué)者寫過一些文章,當(dāng)我的 View State新手指南顯示在主頁 “編輯選擇”部分時(shí),我真的感深覺很得意。下面是我最近為初者學(xué)寫的文檔。
Exploring Caching in ASP.Net
Beginner’s Guide To View State
Beginner’s Guide To ASP.NET Application Folder
Cookies, Session,And Application 是隊(duì)列中的對(duì)象。現(xiàn)在我們來了解Cookies, 我花了一些時(shí)間為這篇文章做準(zhǔn)備。你會(huì)驚訝的發(fā)現(xiàn)介紹部分是我發(fā)表文章前的最后一個(gè)話題。在寫這篇文單寫,我看過很多相關(guān)文檔和書籍,此外還做了一些實(shí)踐。希望我講解的夠清楚,也希望你們能夠喜歡這篇文章并請(qǐng)給我你好的建意。
什么是Cookies?
Cookies 是創(chuàng)于在客戶端系統(tǒng)或客戶瀏覽器內(nèi)存(如果是臨時(shí))上的一個(gè)小文件。它用于狀態(tài)管理,在我的文章View State中已有討論。所以我們可以在客戶端系統(tǒng)存儲(chǔ)并且在我們需要的時(shí)候使用它。有趣的是用戶以透邊的方式工作。它可以方便的應(yīng)用于你的web 應(yīng)用程序。Cookies的信息以純文本格式存儲(chǔ)。如果web應(yīng)用程序用了cookies,服務(wù)器發(fā)送cookies將在客戶端瀏覽器存儲(chǔ)。瀏覽器將在下一次頁面請(qǐng)求的時(shí)候?qū)ookies 返回給服務(wù)器。很多通用的例子是用cookies 來存儲(chǔ)用戶的信息,用戶的偏好,密碼記憶選項(xiàng)等。就些點(diǎn),Cookies 有好處也有壞處。但首先來看一看cookied是如何啟動(dòng)的
Cookies是如何啟動(dòng)的?
當(dāng)客戶端請(qǐng)求到達(dá)服務(wù)器,服務(wù)器發(fā)送cookies 到客戶端。后續(xù)的請(qǐng)求可以引用同一個(gè)Cooke。舉個(gè)例子,如codeproject.com 在cookies 中存儲(chǔ)session id ,當(dāng)客戶端第一次服務(wù)器上點(diǎn)擊,服務(wù)器生成一個(gè)seesion id 并將這樣的一個(gè)cookies 發(fā)送到客戶端。
現(xiàn)在同一客戶端的所有后續(xù)請(qǐng)求都可以可以使用Session ID,如下圖
瀏覽器和web 服務(wù)器負(fù)責(zé)交換cookies 的信息。對(duì)于不同的站點(diǎn),瀏覽器保證cookies的不同,如果頁面需要從cookies 得到信息,當(dāng)你點(diǎn)擊URL,首先找查本地系統(tǒng)的cookies的信息然后再到服務(wù)器上查看信息。
Cookies的優(yōu)勢(shì)
下面是web 應(yīng)用cookies的主要優(yōu)勢(shì):
- 使用和實(shí)施非常簡(jiǎn)單。
- 瀏覽器照顧發(fā)送數(shù)據(jù)。
- 對(duì)于多站點(diǎn)cookies,瀏覽器自動(dòng)安排它們。
Cookies的劣勢(shì)
Cookies的主要劣勢(shì)是:
- Cookies以個(gè)簡(jiǎn)單的文本格式存儲(chǔ)。因此它是不夠安全。
- Cookies 數(shù)據(jù)有一個(gè)大小限制(4096bytes /4KB)
- Cookies也限制數(shù)量,大多數(shù)瀏覽器提拱最大20個(gè)的限制。如果有一個(gè)新的cookies,將舍棄一個(gè)舊的cookies.有些瀏覽器支持多達(dá)300個(gè)cookies
- 我們需要配制瀏覽器。它不能工作在瀏覽器的高安全配制。【我會(huì)詳細(xì)的講解這些】
如何創(chuàng)建cookies?
使用cookies 我們需要使用名稱空間 system.web
Using System.Web;
現(xiàn)在來看一下代碼,我們是怎么創(chuàng)建cookies 并且將它加于web 響應(yīng)。
//createing a cookies object
HttpCookie _userInfoCookies = new HttpCookies(“UserInfo”);
//Setting values inside it
_userInfoCookies[“UserName”]=”Abfdafa”;
_userInfoCookies[“UserColor”]=”Red”;
//Adding cookies to current web response
Response.Cookies.Add(_userInfoCookies);
已創(chuàng)建一個(gè)的cookies一直持續(xù)到瀏覽器關(guān)閉。我們可以讓這個(gè)cookies 持續(xù),如何做到?稍后我會(huì)對(duì)些進(jìn)行探討。
如何從cookies 中讀取數(shù)據(jù)?
現(xiàn)在,是時(shí)間從cookies 中獲取數(shù)據(jù)了。在讀取cookies之前,首先我們要檢測(cè)cookies 能否被找到。好的做法是在檢查之前讀取它,因?yàn)闉g覽器禁用cookies.
//retrieve cookies by cookies name
HttpCookie _userInfoCookies = Request.Cookies[“UserInfo”]
String username;
If (_userInfoCookies !=null)
{
username = _userInfoCookies[“UserName”];
}
什么是持續(xù)和非持續(xù)性cookies?
Cookies我們可以有兩種分類,
- 持續(xù)性cookies
- 非持續(xù)性cookies
持續(xù)性cookies: 這里可以被稱為永久性cookies, 它存儲(chǔ)在客戶端的硬盤上里直到它過期。持續(xù)性cookies應(yīng)該設(shè)置五個(gè)過期日期。通常它一直停留到用戶刪除它。持續(xù)性cookies通常一用于收集系統(tǒng)用戶的辨識(shí)信息。在“怎樣創(chuàng)建一個(gè)持續(xù)性cookes“部分我有討論關(guān)于如何創(chuàng)建持續(xù)性cookies.
非持續(xù)性cookies: 這里被稱為臨時(shí)cookies.如果cookies沒有定義過期時(shí)間它將存儲(chǔ)在瀏覽器內(nèi)存中。我們已給也一個(gè)非持續(xù)性cookies的示例。
因此持續(xù)性和非持續(xù)性cookies之間沒有什么差別。他們之間的差別僅僅是技續(xù)性cookies有過期時(shí)間的定義,非持續(xù)性cookies沒有。
如何使cookies持久?
我已經(jīng)給出了一個(gè)非持續(xù)性的cookies,對(duì)于持續(xù)性cookies,我們僅僅只需要添加一個(gè)過期時(shí)間。在那段代碼里我們加入5天的過期時(shí)間。檢測(cè)一下該示例。
//Creting a Cookie Object
HttpCookie _userInfoCookies = new HttpCookie("UserInfo");
//Setting values inside it
_userInfoCookies["UserName"] = "Abhijit";
_userInfoCookies["UserColor"] = "Red";
_userInfoCookies["Expire"] = "5 Days";
//Adding Expire Time of cookies
_userInfoCookies.Expires = DateTime.Now.AddDays(5);
//Adding cookies to current web response
Response.Cookies.Add(_userInfoCookies);
現(xiàn)在,看一下我們感興趣的事情,cookies存儲(chǔ)在硬盤哪里。
Cookies存儲(chǔ)在本地硬盤的那里?
從本地硬盤中找出cookies是一件有趣的事。首先,從“文件管理器選項(xiàng)”,選擇->顯示隱藏的文件和文件夾。
現(xiàn)在查看 文件和設(shè)定 并打開當(dāng)前用甩的cookies 文件夾,看下圖.
如何移除未過期的持續(xù)性Cookies?
這同樣是一個(gè)好玩的任務(wù),如果你想移除一些未過期的cookies,你唯一只有至換cookies中以前的過期日期。
HttpCookie _userInfoCookies = new HttpCookie("UserInfo");
//Adding Expire Time of cookies before existing cookies time
_userInfoCookies.Expires = DateTime.Now.AddDays(-1);
//Adding cookies to current web response
Response.Cookies.Add(_userInfoCookies);
如何控制cookies的范圍?
我們可用如下的方式控制cookies的范圍
- 限制cookies的路徑
- 限制cookies的域
什么是Cookies Munging?
Asp.net默認(rèn)用cookies來存儲(chǔ)會(huì)話的id, 但是我們已討論過一些瀏覽器是不支持cookies,針對(duì)于這個(gè)問題,asp.net 將使用“Cookies Munging”來管理cookie的會(huì)話變量。
雖然這也關(guān)系到會(huì)話,我將給也一個(gè)基本的概述。我將在另一篇session 的文章中詳細(xì)闡述。
我們?yōu)槭裁匆赼sp.net中用cookies munging?
這里有在asp.net 中使用cookies munging的一些特殊的原因
- 一些瀏覽器不支持cookies.
- 大多數(shù)時(shí)候,用戶禁用了瀏覽器的cookies.
Cookies Munging 是怎樣工作的?
當(dāng)用戶請(qǐng)求于服務(wù)器務(wù)器的一個(gè)頁面。服務(wù)器加密會(huì)話ID,并且將它加于頁面的每個(gè)超連接中。當(dāng)用點(diǎn)擊這些連接,asp.net解密這些會(huì)話ID并傳遞頁面用戶請(qǐng)求。現(xiàn)在請(qǐng)求頁面會(huì)收到一些變量會(huì)話。如果asp.net發(fā)現(xiàn)用戶的瀏覽器不支持cookies,這一切是自動(dòng)的。
如何實(shí)現(xiàn)Cookie Munging?
為些我們要向做成少cookies的會(huì)放狀態(tài)。
第一選項(xiàng)允許所有cookies,最后一個(gè)cookies禁止所有cookies,你可以滾動(dòng)條的時(shí)候得到詳細(xì)的設(shè)定。
摘要
這里是一些學(xué)習(xí)cookies的話題,希望對(duì)一些初學(xué)者起步有幫助。請(qǐng)給你的反饋意見。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
