在 Web 應用程式中,將會話資料儲存在客戶端而非伺服器,主要有兩種方案:Cookie 與 隱藏表單欄位。兩者各有優劣,選擇時需權衡專案需求。
利用 HTML `` 標籤,在頁面中內嵌不可見的資料欄位。伺服器端透過 `HttpServletRequest.getParameter()` 讀取值,如同一般表單欄位。
out.print("");
安全性要求不高、舊頁面較少、頁面層級淺、且不願綁定伺服器親和性的小型專案。
將會話資料序列化為字串,存入 `HttpServletResponse` 的 Cookie 物件中,瀏覽器自動在後續請求攜帶回送。
Cookie cookie = new Cookie("sessionData", stateString);
cookie.setDomain(".example.com");
cookie.setPath("/");
cookie.setVersion(0);
response.addCookie(cookie);
| 維度 | 隱藏欄位 | Cookie |
|---|---|---|
| 開發複雜度 | 高(需重寫每頁 HTML) | 低(瀏覽器自動處理) |
| 資料量 | 無硬性限制,但影響頁面大小 | 嚴格 4KB 總上限 |
| 跨頁面持久性 | 需手動串接 | 自動跨請求持久 |
| 跨技術存取 | 困難 | 容易(JS/CGI 皆可) |
| 用戶可控性 | 不可見但不可控 | 可檢視、刪除、停用 |
對於大多數企業級應用,伺服器端 Session 機制(搭配 Session ID Cookie 或 URL 重寫)仍是更穩健、安全且可擴展的選擇。客戶端儲存方案宜作為輔助或特定場景(如無狀態認證 Token)使用。