ASP.NET對(duì)Cookie的操作
概述
Cookie用來(lái)保存客戶瀏覽器請(qǐng)求服務(wù)器頁(yè)面的請(qǐng)求信息。
我們可以存放非敏感的用戶信息,保存時(shí)間可以根據(jù)需要設(shè)置。如果沒(méi)有設(shè)置Cookie失效日期,它的生命周期保存到關(guān)閉瀏覽器為止,Cookie對(duì)象的Expires屬性設(shè)置為MinValue表示永不過(guò)期。
Cookie存儲(chǔ)的數(shù)據(jù)量受限制,大多數(shù)的瀏覽器為4K因此不要存放大數(shù)據(jù)。
由于并非所有的瀏覽器都支持Cookie,數(shù)據(jù)將以明文的形式保存在客戶端。
一、創(chuàng)建Cookie:發(fā)送到客戶端瀏覽器
Domain和Path相同的所有Cookie在客戶端存在于一個(gè)文件中。
//通用設(shè)置
Response.Cookies["userName"].Value = "Park";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);//不設(shè)Expires默認(rèn)關(guān)閉瀏覽器就過(guò)期
Response.Cookies["userName"].Domain = "park.aa.com";//Domain默認(rèn)為域名部分,以表示aa.com下的所有子域名。
Response.Cookies["userName"].Path = "App1";//Path默認(rèn)為根目錄"/",表示根目錄下的所有頁(yè)面和子目錄
//單值Cookie
HttpCookie Cookie = new HttpCookie("userName");
cookie.Value = "Park";
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);
//多值Cookie
HttpCookie cookies = new HttpCookie("userName");
cookies["name"] = "Park";
cookies["sex"] = "1";
cookies.Expires = DateTime.Now.AddMinutes(20);
Response.Cookies.Add(cookies);
//Response.SetCookies(cookies)
//Response.AppendCookis(cookies);二、讀取Cookie:
Domain、Path和Expires是無(wú)法讀取的
if (Request.Cookies["userName"] != null)
{
//讀取多值Cookie
Response.Write(Request.Cookies["userName"].Value) //可以Server.HtmlEncode()編碼
//讀取多值Cookie
Response.Write("Cookie中鍵值為userid的值:" + Request.Cookies["userName"]["sex"]);
}三、修改Cookie
不能直接修改一個(gè)Cookie,是創(chuàng)建一個(gè)同名的Cookie,并把該Cookie發(fā)送到瀏覽器覆蓋客戶機(jī)上的舊Cookie。
HttpCookie cok = Request.Cookies["userName"];//獲取客戶端的Cookie對(duì)象
if (cok != null)
{
cok.Values["userid"] = "alter-value";//修改Cookie
cok.Values.Set("newid", "newValue");//往Cookie里加入新的內(nèi)容
Response.AppendCookie(cok);
//或者
Response.Cookies["userName"].Value = "aa";
}
Response.Cookies["Porschev"].Expires = DateTime.Now.AddMinutes(-1); 四、刪除Cookie:
無(wú)法直接刪除一個(gè)Cookie,可通過(guò)修改它的Expires為過(guò)去的某個(gè)時(shí)間,瀏覽器會(huì)刪除已經(jīng)過(guò)期的Cookie。
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(-1);
//或者
HttpCookie cok = Request.Cookies["userName"];
if (cok != null)
{
if (!CheckBox1.Checked)
{
cok.Values.Remove("userid");//移除鍵值為userid的值
}
else
{
TimeSpan ts = new TimeSpan(0, 0, 0, 0);
cok.Expires = DateTime.Now.Add(ts);//刪除整個(gè)Cookie,只要把過(guò)期時(shí)間設(shè)置為現(xiàn)在
}
Response.AppendCookie(cok);
}到此這篇關(guān)于ASP.NET操作Cookie的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
.NET項(xiàng)目在k8s中運(yùn)行的Dapr持續(xù)集成流程
這篇文章主要介紹了.NET項(xiàng)目在k8s中運(yùn)行的Dapr持續(xù)集成流程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
ABP入門系列應(yīng)用BootstrapTable表格插件
Bootstrap table是一個(gè)開(kāi)源的輕量級(jí)功能非常豐富的前端表格插件。下面通過(guò)本文給大家介紹ABP入門系列應(yīng)用BootstrapTable表格插件,感興趣的朋友一起學(xué)習(xí)吧2017-03-03
.Net性能調(diào)優(yōu)-ArrayPool詳情
ArrayPool具有高性能 托管 數(shù)組緩沖池,可重復(fù)使用,用 租用 空間的方式代替 重新分配 數(shù)組空間的行為的特點(diǎn)及可以在頻繁創(chuàng)建和銷毀數(shù)組的情況下 提高性能 ,減少垃圾回收器的壓力的優(yōu)點(diǎn),下面文章內(nèi)容將詳細(xì)對(duì)其做介紹,需要的朋友可以參考一下2021-09-09
使用.NET6實(shí)現(xiàn)動(dòng)態(tài)API
本文詳細(xì)講解了使用.NET6實(shí)現(xiàn)動(dòng)態(tài)API,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
asp.net core使用DevExtreme20將int列轉(zhuǎn)為checkbox方法示例
這篇文章主要為大家介紹了asp.net core使用DevExtreme20將int列轉(zhuǎn)為checkbox方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
ASP.NET熱點(diǎn)問(wèn)題解答14個(gè)
ASP.NET熱點(diǎn)問(wèn)題解答14個(gè)...2006-07-07
ASP.NET?Core?6最小API中使用日志和DI示例詳解
這篇文章主要為大家介紹了ASP.NET?Core?6最小API中使用日志和DI示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
.net中線程同步的典型場(chǎng)景和問(wèn)題剖析
在使用多線程進(jìn)行編程時(shí),有一些經(jīng)典的線程同步問(wèn)題,對(duì)于這些問(wèn)題,.net提供了多種不同的類來(lái)解決2012-11-11

