首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET HttpCookie 類別操作全攻略:建立、讀寫與優缺點分析

     編輯:ASP.NET 基礎

HttpCookie 類別核心成員

成員類型說明
Name屬性Cookie 名稱 (唯一識別)
Value屬性單一值 (不含子鍵時)
Expires屬性過期時間 (DateTime),MinValue=Session Cookie
Domain屬性適用域名 (如 .example.com)
Path屬性適用路徑 (預設 /)
Secure屬性僅 HTTPS 傳輸
HttpOnly屬性禁止 JS 存取
HasKeys屬性是否包含子鍵
Item[key]索引子存取子鍵值

基本操作範例

建立並寫入 Cookie

// 單值
HttpCookie c1 = new HttpCookie("UserName", "Admin");
c1.Expires = DateTime.Now.AddDays(7);
Response.Cookies.Add(c1);

// 子鍵
HttpCookie c2 = new HttpCookie("UserProfile");
c2["RealName"] = "張三";
c2["Role"] = "Manager";
c2.Expires = DateTime.Now.AddHours(2);
Response.Cookies.Add(c2);

讀取 Cookie

// 單值
if (Request.Cookies["UserName"] != null)
    lblMsg.Text = Request.Cookies["UserName"].Value;

// 子鍵
if (Request.Cookies["UserProfile"] != null)
{
    string name = Request.Cookies["UserProfile"]["RealName"];
    string role = Request.Cookies["UserProfile"]["Role"];
}

雙頁面完整傳遞範例

Default1.aspx (寫入)

protected void btnSave_Click(object sender, EventArgs e)
{
    HttpCookie c = new HttpCookie("CrossPage");
    c.Value = "Cookie Value";
    Response.Cookies.Add(c);
    Response.Write("<script>alert('儲存成功');</script>");
}

protected void btnGo_Click(object sender, EventArgs e)
{
    Response.Redirect("Default2.aspx");
}

Default2.aspx (讀取)

protected void btnRead_Click(object sender, EventArgs e)
{
    if (Request.Cookies["CrossPage"] != null)
    {
        Response.Write($"Name: {Request.Cookies["CrossPage"].Name}<br/>");
        Response.Write($"Value: {Request.Cookies["CrossPage"].Value}<br/>");
    }
    else
        Response.Write("Cookie 不存在或已過期");
}

Cookie vs Session vs Application 比較

面向CookieSessionApplication
儲存位置客戶端瀏覽器伺服器記憶體/StateServer/SQL伺服器記憶體 (進程級)
生命週期可設定永久/過期預設 20 分鐘滑動過期應用程式存活期間
容量4KB/個,~20個/域視伺服器記憶體視伺服器記憶體
安全性可被竄改/偽造僅 SessionID 傳遞,資料在伺服器伺服器端,不可直接竄改
適用場景偏好設定、記住我、追蹤登入狀態、購物車、敏感資料全站共用計數、快取、設定

Cookie 優缺點總結

優點

  • 持久化:關閉瀏覽器不消失 (設定 Expires)。
  • 零伺服器資源:不佔用記憶體。
  • 簡單:純鍵值對,易序列化/傳輸。
  • 可跨網域 (設定 Domain)。

缺點

  • 大小限制 (4KB)。
  • 用戶可禁用/刪除/竄改。
  • 每次請求自動攜帶,增加頻寬。
  • 安全風險:XSS 竊取、CSRF 濫用 (需 HttpOnly + AntiForgeryToken)。

結語

HttpCookie 是 ASP.NET 操作 Cookie 的核心類別。理解其屬性、子鍵結構、生命週期控制與三大狀態管理物件的定位差異,才能在正確的場合選擇正確的工具:**記住偏好用 Cookie、登入狀態用 Session、全域共用用 Application**。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved