ASP.NET浏览器相关缓存(二)-CookieHelper
using System;
using System.Text.RegularExpressions;
using System.Web;
namespace Common
{
/// <summary>
/// Cookie帮助类
/// <para>主要方法如下:</para>
/// <para>01. GetCookie(string keyName) //获得cookie值</para>
/// <para>03. SetCookie(string cookieName, string keyValue) //写cookie值 单一项值</para>
/// <para>04. SetCookies(string cookieName, string keyName, string keyValue) //写cookie值 多值</para>
/// <para>05. ClearCookie(string cookieName) //清除指定Cookie</para>
/// </summary>
public class CookieHelper
{
#region 获取cookie值
/// <summary>
/// 获得cookie值
/// </summary>
/// <param name="keyName">名称</param>
/// <returns>cookie值</returns>
public static string GetCookie(string keyName)
{
var httpCookie = HttpContext.Current.Request.Cookies[keyName];
return httpCookie != null ? httpCookie.Value : "";
}
/// <summary>
/// 获得cookie值
/// </summary>
/// <param name="cookieName">Cookie 名称</param>
/// <param name="keyName">项</param>
/// <returns>值</returns>
public static string GetCookie(string cookieName, string keyName)
{
var httpCookie = HttpContext.Current.Request.Cookies[cookieName];
if (httpCookie != null && httpCookie[keyName] != null)
{
return HttpUtility.UrlDecode(httpCookie.Values[keyName]);
}
return "";
}
#endregion
#region 设置cookie值 单一值
/// <summary>
/// 写cookie值
/// 存放cookie值(单一项值)
/// </summary>
/// <param name="cookieName">名称</param>
/// <param name="keyValue">值</param>
public static void SetCookie(string cookieName, string keyValue)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName] ?? new HttpCookie(cookieName);
cookie.Value = keyValue;
HttpContext.Current.Response.AppendCookie(cookie);
}
/// <summary>
/// 写cookie值
/// 存放cookie值(单一项值)
/// </summary>
/// <param name="cookieName">名称</param>
/// <param name="keyValue">值</param>
/// <param name="domain">域</param>
public static void SetCookie(string cookieName, string keyValue, string domain)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName] ?? new HttpCookie(cookieName);
cookie.Value = keyValue;
if (domain != string.Empty && HttpContext.Current.Request.Url.Host.IndexOf(domain) > -1 && IsValidDomain(HttpContext.Current.Request.Url.Host))
cookie.Domain = domain;
HttpContext.Current.Response.AppendCookie(cookie);
}
/// <summary>
/// 写cookie值
/// 存放cookie值(单一项值)
/// </summary>
/// <param name="cookieName">名称</param>
/// <param name="keyValue">值</param>
/// <param name="domain">域</param>
/// <param name="expires">cookie 保存时长 单位分种</param>
public static void SetCookie(string cookieName, string keyValue, string domain, int expires)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName] ?? new HttpCookie(cookieName);
cookie.Value = keyValue;
cookie.Expires = DateTime.Now.AddMinutes(expires);
if (domain != string.Empty && HttpContext.Current.Request.Url.Host.IndexOf(domain) > -1 && IsValidDomain(HttpContext.Current.Request.Url.Host))
cookie.Domain = domain;
HttpContext.Current.Response.AppendCookie(cookie);
}
#endregion
#region 设置cookie值 多值
/// <summary>
/// 写cookie值 多值
/// </summary>
/// <param name="cookieName">cookies名字</param>
/// <param name="keyName">cookie项的名称,cookie[keyName][]</param>
/// <param name="keyValue">cookie项的值,cookie[keyName][keyValue]</param>
public static void SetCookies(string cookieName, string keyName, string keyValue)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName] ?? new HttpCookie(cookieName);
cookie.Values[keyName] = HttpUtility.UrlEncode(keyValue);
HttpContext.Current.Response.AppendCookie(cookie);
}
/// <summary>
/// 写cookie值 多值
/// </summary>
/// <param name="cookieName">cookies名字</param>
/// <param name="keyName">cookie项的名称,cookie[keyName][]</param>
/// <param name="keyValue">cookie项的值,cookie[keyName][keyValue]</param>
/// <param name="domain">cookie域属性</param>
public static void SetCookies(string cookieName, string keyName, string keyValue, string domain )
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName] ?? new HttpCookie(cookieName);
cookie.Values[keyName] = HttpUtility.UrlEncode(keyValue);
if (domain != string.Empty && HttpContext.Current.Request.Url.Host.IndexOf(domain) > -1 && IsValidDomain(HttpContext.Current.Request.Url.Host))
cookie.Domain = domain;
HttpContext.Current.Response.AppendCookie(cookie);
}
/// <summary>
/// 写cookie值 多值
/// </summary>
/// <param name="cookieName">cookies名字</param>
/// <param name="keyName">cookie项的名称,cookie[keyName][]</param>
/// <param name="keyValue">cookie项的值,cookie[keyName][keyValue]</param>
/// <param name="domain">cookie域属性</param>
/// <param name="expires">cookies 有效时间 单位天</param>
public static void SetCookies(string cookieName, string keyName, string keyValue, string domain, int expires)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName] ?? new HttpCookie(cookieName);
cookie.Values[keyName] = HttpUtility.UrlEncode(keyValue);
cookie.Expires = DateTime.Now.AddMinutes(expires);
if (domain != string.Empty && HttpContext.Current.Request.Url.Host.IndexOf(domain) > -1 && IsValidDomain(HttpContext.Current.Request.Url.Host))
cookie.Domain = domain;
HttpContext.Current.Response.AppendCookie(cookie);
}
#endregion
#region 清楚cookie
/// <summary>
/// 清除指定Cookie
/// </summary>
/// <param name="cookieName">cookiename</param>
public static void ClearCookie(string cookieName)
{
HttpCookie cookie = HttpContext.Current.Request.Cookies[cookieName];
if (cookie != null)
{
cookie.Expires = DateTime.Now.AddYears(-3);
HttpContext.Current.Response.AppendCookie(cookie);
}
}
public static void ClearCookie(string cookieName, string domain)
{
HttpCookie cookie = new HttpCookie(cookieName);
cookie.Values.Clear();
cookie.Expires = DateTime.Now.AddYears(-1);
//string cookieDomain = ConfigFactory.GetConfig().CookieDomain.Trim();
if (domain != string.Empty && HttpContext.Current.Request.Url.Host.IndexOf(domain) > -1 && IsValidDomain(HttpContext.Current.Request.Url.Host))
cookie.Domain = domain;
HttpContext.Current.Response.AppendCookie(cookie);
}
#endregion
/// <summary>
/// 是否为有效域
/// </summary>
/// <param name="host">域名</param>
/// <returns></returns>
private static bool IsValidDomain(string host)
{
Regex r = new Regex(@"^\d+$");
if (host.IndexOf(".") == -1)
{
return false;
}
return !r.IsMatch(host.Replace(".", string.Empty));
}
}
}
本文来自博客园,作者:꧁执笔小白꧂,转载请注明原文链接:https://www.cnblogs.com/qq2806933146xiaobai/articles/17986414
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
2022-01-25 Web跨域学习笔记
2022-01-25 uni-app static目录的条件编译
2022-01-25 uni-app判断运行的平台
2021-01-25 Linux-Shell里/dev/fd与/proc/self/fd的区别
2021-01-25 常用抓包工具
2021-01-25 Ubuntu-系统版本Ubuntu Kubuntu Xubuntu Lubuntu Dubuntu Mythbuntu UbuntuBudgie的区别