目錄
前言
這兩天剛剛接觸新的詞彙,在很淺的層次上做一個小小的總結,讓自己加深一下印象,並且在總結過程中搜索更多相關的內容,豐富對於此知識點更廣知識面的總結和理解。接下來就從定義、區別以及工作原理幾方面進行一個小小的總結。
定義:
1、什麼Cookie?
Cookie:這個詞語很熟悉,英文“曲奇餅乾”,今天在學習ASP.NET是有接觸了一下。
Cookie今天接觸了一個關於Cookie的新的概念“客戶端狀態保持” 。常用用於識別用戶。cookie 是一種服務器留在用戶計算機上的小文件。每當同一臺計算機通過瀏覽器請求頁面時,這臺計算機將會發送 cookie。通過 ASP,您能夠創建並取回 cookie 的值。
cookie:一小段文本,明文。存儲在客戶端的瀏覽器內存裏面或者磁盤。cookie是跟網站相關,百度可以往客戶端寫cookie,sina也可寫cookie,但是百度只能讀取跟百度網站相關的cookie。
cookie會隨着請求網站一塊發送到後臺【如果請求百度的時候,那麼就把百度的cookie放到請求報文裏面去,然後發送到後臺。】
cookie可以設置一個Path來限制某個路徑下面的頁面纔會把cookie發送到後臺。
比如:請求圖片,請求一個css、js,爲了提高性能,可以通過 path設置頁面的所在路徑,來控制cookie的發送。
Cookie的域:瀏覽器往後臺發送數據時候,要把cookie放到請求報文裏面去,發送到後臺。 如果請求是主域頁面,子域的cookie是不會發送到後臺的。如果子域想讓請求主域頁面的時候也一塊發送到後臺,設置當前Cookie的域爲主域可以了。
cookie是通過響應報文的方式寫到前臺。最終寫入Cookie是通過響應報文頭來的
創建Cookie:
namespace WebApp2._0._2020_02_25
{
public partial class CookieDemo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//創建cookie的基本語法
//Response.Cookies["cp1"].Value="itcast";
//創建cookie並且制定過期時間
Response.Cookies["cp2"].Value = "老虎";
Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(3);
//刪除cookie(給過期時間一個已經過去的時間即可 )
Response.Cookies["cp2"].Expires = DateTime.Now.AddDays(-1);
//cookie跨域問題(域名)
// Response.Cookies["cp3"].Value = "老鼠";
//Response.Cookies["cp3"].Domain = "xxx.com";//設置爲主域的方法
//Response.Cookies["cp3"].Path = "/2020-02-25";//只訪問此文件夾下的文件的時候請求報文帶cookie的數據
//Response.Cookies["cp3"].Expires = DateTime.Now.AddDays(7);
}
}
}
讀取Cookie值:
namespace WebApp2._0._2020_02_25
{
public partial class CookieDemo2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//獲取cookie的值
if (Request.Cookies["cp2"]!=null)
{
//Response.Write(Request.Cookies["cp1"].Value);
Response.Write(Request.Cookies["cp2"].Value);
}
}
}
}
CookieDemo和CookieDemo2報文中的Cookie值均爲:
並且可以查詢到延期時間爲3天(今天26日):(通過查詢報文可發現Cookie的過期時間爲2月29日,正好3天)
更過關於Cookie的創建和讀取等功能參考
2、什麼是Session。
服務端的狀態保持機制(cookie是存儲在用戶的電腦上:)可以將各種類型數據存儲到Session,最終將這些數據存儲到服務端的內存中。
創建Session
namespace WebApp2._0._2020_02_26
{
public partial class SessionDemo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//判斷是否提交
if (IsPostBack)
{
string name = Request.Form["txtName"];
Session["userName"] = name;
Response.Redirect("test.aspx");
}
}
}
}
當提交之後,不關閉此網址的同時打開另一個網頁,輸入相同的網址,則顯示結果一樣,因爲此時SessionID一樣:
當此頁面關閉之後,再次打開此網址,可以發現此網頁內容就會不見了:因爲此時的SessionID發生了變化。【詳見下面的運行原理圖】
更多關於Session的屬性、事件和方法參考
相同與不同
1.session其實指的就是訪問者從到達某個特定主頁到離開爲止的那段時間。 Session其實是利用Cookie進行信息處理的,當用戶首先進行了請求後,服務端就在用戶瀏覽器上創建了一個Cookie,當這個Session結束時,其實就是意味着這個Cookie就過期了。
注:爲這個用戶創建的Cookie的名稱是aspsessionid。這個Cookie的唯一目的就是爲每一個用戶提供不同的身份認證。
2.cookie和session的共同之處在於:cookie和session都是用來跟蹤瀏覽器用戶身份的會話方式。
3.cookie 和session的區別是:cookie數據保存在客戶端,session數據保存在服務器端。