網站首頁 編程語言 正文
概述
Cookie用來保存客戶瀏覽器請求服務器頁面的請求信息。
我們可以存放非敏感的用戶信息,保存時間可以根據需要設置。如果沒有設置Cookie失效日期,它的生命周期保存到關閉瀏覽器為止,Cookie對象的Expires屬性設置為MinValue表示永不過期。
Cookie存儲的數據量受限制,大多數的瀏覽器為4K因此不要存放大數據。
由于并非所有的瀏覽器都支持Cookie,數據將以明文的形式保存在客戶端。
一、創建Cookie:發送到客戶端瀏覽器
Domain和Path相同的所有Cookie在客戶端存在于一個文件中。
//通用設置
Response.Cookies["userName"].Value = "Park";
Response.Cookies["userName"].Expires = DateTime.Now.AddDays(1);//不設Expires默認關閉瀏覽器就過期
Response.Cookies["userName"].Domain = "park.aa.com";//Domain默認為域名部分,以表示aa.com下的所有子域名。
Response.Cookies["userName"].Path = "App1";//Path默認為根目錄"/",表示根目錄下的所有頁面和子目錄
//單值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
不能直接修改一個Cookie,是創建一個同名的Cookie,并把該Cookie發送到瀏覽器覆蓋客戶機上的舊Cookie。
HttpCookie cok = Request.Cookies["userName"];//獲取客戶端的Cookie對象
if (cok != null)
{
cok.Values["userid"] = "alter-value";//修改Cookie
cok.Values.Set("newid", "newValue");//往Cookie里加入新的內容
Response.AppendCookie(cok);
//或者
Response.Cookies["userName"].Value = "aa";
}
Response.Cookies["Porschev"].Expires = DateTime.Now.AddMinutes(-1);
四、刪除Cookie:
無法直接刪除一個Cookie,可通過修改它的Expires為過去的某個時間,瀏覽器會刪除已經過期的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);//刪除整個Cookie,只要把過期時間設置為現在
}
Response.AppendCookie(cok);
}
原文鏈接:https://www.cnblogs.com/springsnow/p/9433972.html
相關推薦
- 2022-05-26 Flutter實現滑動塊驗證碼功能_Android
- 2022-10-20 Kotlin作用域函數應用詳細介紹_Android
- 2022-04-26 jquery實現表格行拖動排序_jquery
- 2022-10-17 漫談C++哈夫曼樹的原理及實現_C 語言
- 2022-04-12 Taro打包Android?apk過程詳解_Android
- 2022-06-06 typescript使用class關鍵字定義一個類、static、readonly
- 2022-08-10 .Net通過TaskFactory.FromAsync簡化APM_實用技巧
- 2022-10-15 Go?編程復雜數據類型?Map_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支