雖然新技術層出不窮,Cookie 仍是 Web 開發基石。許多人視其為「雞肋」,主要缺點:
但優點同樣明顯:
僅限「非機密、可識別使用者身分」的資訊:使用者偏好設定、語言選擇、購物車 ID、追蹤代碼等。嚴禁存放密碼、信用卡號、Session ID 等敏感資料。
Response.Cookies["UserName"].Value = "JohnDoe";
Response.Cookies["UserName"].Expires = DateTime.Now.AddDays(30); // 持久 30 天
// 或 Response.Cookies["UserName"].Expires = DateTime.MinValue; // Session Cookie
if (Request.Cookies["UserName"] != null)
{
string userName = Request.Cookies["UserName"].Value;
}
// 寫入
string userIP = Request.UserHostAddress;
Response.Cookies["ClientIP"].Value = userIP;
Response.Cookies["ClientIP"].Expires = DateTime.MaxValue; // 永久
// 讀取
Response.Write("您的 IP:" + Request.Cookies["ClientIP"]?.Value);
Response.Cookies["DomainCookie"].Domain = ".example.com"; // 所有子網域可讀
// 防止 JavaScript 存取(緩解 XSS)
Response.Cookies["AuthToken"].HttpOnly = true;
// 僅 HTTPS 傳輸
Response.Cookies["AuthToken"].Secure = true;
也可在 `web.config` 全域設定:
<system.web>
<httpCookies httpOnlyCookies="true" requireSSL="false" />
</system.web>
Response.Cookies["ChineseName"].Value = Server.UrlEncode("中文名稱");
// 讀取時
string name = Server.UrlDecode(Request.Cookies["ChineseName"].Value);
Cookie 並未過時,只要用在正確場景(非敏感、小量、需跨請求持久),仍是最輕量、相容性最好的選擇。關鍵在於理解其限制並採取適當防護。