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

Cookie 與 Session 基礎知識與 ASP.NET 實務應用全解析

     編輯:關於ASP.NET

Cookie(客戶端)與 Session(伺服器端)是 Web 狀態管理的兩大基石,本文系統整理原理、設定、傳遞機制與常見問題。

核心差異對照

特性CookieSession
儲存位置客戶端瀏覽器伺服器端(記憶體/State Server/SQL Server)
資料型別字串Object(需型別轉換)
容量~4KB/域名視伺服器記憶體/資料庫而定
安全性明文,不宜存敏感資訊較高,不直接暴露給用戶端
生命週期可設定過期日會話結束或 Timeout (預設 20 分鐘)
典型用途「記住我」、用戶偏好設定購物車、使用者權限、多步驟精靈

ASP.NET Web.config 設定

<sessionState mode="InProc" timeout="20" cookieless="true" 
    stateConnectionString="tcpip=localhost:42424" 
    sqlConnectionString="" />
  • mode:InProc(進程內)、StateServer、SQLServer、Custom
  • cookieless:true 將 SessionID 嵌入 URL,支援禁用 Cookie 的瀏覽器

常見問題解答

Q1:禁用 Cookie 後 Session 還能用嗎?

能。設定 cookieless="true",SessionID 透過 URL 或 Form 傳遞。但 URL 暴露 SessionID 有安全風險,建議搭配 SSL。

Q2:Cookie 傳遞具體過程?

雙向透過 HTTP Header:

  • Client → Server:Request.Headers["Cookie"] 包含所有 Cookie 鍵值對
  • Server → Client:Response.Headers["Set-Cookie"] 設定單一 Cookie 屬性(值、過期、Domain、Path、HttpOnly、Secure)

可用 Fiddler、HttpWatch、Firebug 開發者工具觀察 Header 內容。

SessionID 與 Cookie 關係

預設 SessionID 存於 Cookie ASP.NET_SessionId,伺服器以此關聯 Session 狀態。若 cookieless=true,SessionID 改嵌入 URL 路徑(如 /(S(xyz))/page.aspx)。

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