網(wǎng)站首頁 編程語言 正文
概述
Cookie用來保存客戶瀏覽器請(qǐng)求服務(wù)器頁面的請(qǐng)求信息。
我們可以存放非敏感的用戶信息,保存時(shí)間可以根據(jù)需要設(shè)置。如果沒有設(shè)置Cookie失效日期,它的生命周期保存到關(guān)閉瀏覽器為止,Cookie對(duì)象的Expires屬性設(shè)置為MinValue表示永不過期。
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)閉瀏覽器就過期
Response.Cookies["userName"].Domain = "park.aa.com";//Domain默認(rèn)為域名部分,以表示aa.com下的所有子域名。
Response.Cookies["userName"].Path = "App1";//Path默認(rèn)為根目錄"/",表示根目錄下的所有頁面和子目錄
//單值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是無法讀取的
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:
無法直接刪除一個(gè)Cookie,可通過修改它的Expires為過去的某個(gè)時(shí)間,瀏覽器會(huì)刪除已經(jīng)過期的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,只要把過期時(shí)間設(shè)置為現(xiàn)在
}
Response.AppendCookie(cok);
}
原文鏈接:https://www.cnblogs.com/springsnow/p/9433972.html
相關(guān)推薦
- 2022-09-30 React前端渲染優(yōu)化--父組件導(dǎo)致子組件重復(fù)渲染的問題_React
- 2022-08-22 詳解golang執(zhí)行Linux?shell命令完整場(chǎng)景下的使用方法_Golang
- 2022-01-31 微信小程序獲取二維碼中URL中帶的參數(shù)
- 2023-01-31 C#實(shí)現(xiàn)批量壓縮和解壓縮的示例代碼_C#教程
- 2022-10-26 Python如何用NumPy讀取和保存點(diǎn)云數(shù)據(jù)_python
- 2022-05-06 利用python實(shí)現(xiàn)蝴蝶曲線_python
- 2022-03-30 一篇文章帶你了解C語言的選擇結(jié)構(gòu)_C 語言
- 2022-05-28 教你C#將CSV轉(zhuǎn)為Excel的實(shí)現(xiàn)方法_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支