HttpCookie 是一个在.NET Framework中用于管理和操作HTTP Cookie的类。它提供了一种方便的方式来创建、设置、读取和删除Cookie。
Cookie是一种在客户端和服务器之间传递数据的机制,用于跟踪用户的会话状态和存储用户相关的信息。它通常由服务器发送给客户端,并由客户端保存在浏览器中。
HttpCookie 类提供了以下属性和方法:
- Name: 获取或设置Cookie的名称。
- Value: 获取或设置Cookie的值。
- Expires: 获取或设置Cookie的过期时间。
- Domain: 获取或设置Cookie的域名。
- Path: 获取或设置Cookie的路径。
- Secure: 获取或设置一个布尔值,指示是否使用安全连接(HTTPS)发送Cookie。
- HttpOnly: 获取或设置一个布尔值,指示Cookie是否仅在HTTP请求中可见,而不允许客户端脚本访问它。
- SameSite: 获取或设置Cookie的SameSite属性,用于控制Cookie在跨站点请求中的发送行为。
- ToString(): 将HttpCookie对象转换为字符串表示形式。
通过使用HttpCookie类,开发人员可以轻松地创建和管理HTTP Cookie。它在Web应用程序中广泛应用,用于存储和传递与用户会话相关的数据。
以下是通过HttpCookie建立工具类的代码,可根据具体需求调整
cs
using System;
using System.Web;
namespace Wing.Framework.Utility
{
/// <summary>
/// Cookie帮助类
/// </summary>
public class Cookie
{
/// <summary>
/// 取Cookie
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static HttpCookie Get(string name)
{
return HttpContext.Current.Request.Cookies[name];
}
/// <summary>
/// 取Cookie值
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
public static string GetValue(string name)
{
var httpCookie = Get(name);
if (httpCookie != null)
return httpCookie.Value;
else
return string.Empty;
}
/// <summary>
/// 移除Cookie
/// </summary>
/// <param name="name"></param>
public static void Remove(string name)
{
Cookie.Remove(Cookie.Get(name));
}
public static void Remove(HttpCookie cookie)
{
if (cookie != null)
{
cookie.Expires = DateTime.Now;
Cookie.Save(cookie);
}
}
/// <summary>
/// 保存Cookie
/// </summary>
/// <param name="name"></param>
/// <param name="value"></param>
/// <param name="expiresHours"></param>
public static void Save(string name, string value, int expiresHours = 0)
{
var httpCookie = Get(name);
if (httpCookie == null)
httpCookie = Set(name);
httpCookie.Value = value;
Cookie.Save(httpCookie, expiresHours);
}
public static void Save(HttpCookie cookie, int expiresHours = 0)
{
string domain = Fetch.ServerDomain;
string urlHost = HttpContext.Current.Request.Url.Host.ToLower();
if (domain != urlHost)
cookie.Domain = domain;
if (expiresHours > 0)
cookie.Expires = DateTime.Now.AddHours(expiresHours);
HttpContext.Current.Response.Cookies.Add(cookie);
}
public static HttpCookie Set(string name)
{
return new HttpCookie(name);
}
}
}
12