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

Java Web 開發必備:Cookie 操作全攻略(設置、讀取、刪除與跨路徑陷阱)

     編輯:Java 程式設計入門

核心 API 快速上手

1. 設置 Cookie

Cookie cookie = new Cookie("key", "value");
cookie.setMaxAge(60);              // 60 秒生存期;負值 = 會話級(瀏覽器關閉失效)
cookie.setPath("/test/test2");     // 指定路徑;默認為當前 Servlet 路徑
response.addCookie(cookie);

2. 讀取 Cookie

Cookie[] cookies = request.getCookies(); // 返回當前路徑及直接父路徑所有 Cookie;無則返回 null

3. 刪除 Cookie

Cookie cookie = new Cookie("key", null);
cookie.setMaxAge(0);               // 0 = 立即刪除
cookie.setPath("/test/test2");     // 必須與創建時路徑一致
response.addCookie(cookie);

路徑匹配的瀏覽器差異大揭秘

假設路徑結構:/test/test2/test345/test555/test666

場景Firefox (FF)Internet Explorer (IE)
同名 Cookie 可存在於不同路徑 ✅ 兩者一致
刪除時向上查找父路徑 ✅ 僅刪除最近父路徑同名 Cookie ✅ 但行為受大小寫影響(見下)
大小寫敏感度 ⚠️ 必須指定創建時相同路徑,鍵名大小寫皆敏感 鍵名小寫:向上查找 /test/test2 → /test → /test555 → /test345 → /
鍵名大寫/混合:默認僅刪除當前路徑,不向上查找
讀取範圍 📖 僅當前路徑 + 直接父路徑(如 /test/test2 讀取 /test/test2、/test、/)

多 Web 應用共存的避坑指南

Tomcat/Jetty 以 Context 隔離 Web 應用,各有獨立 Path。同域名下部署多應用時,嚴禁設置 Path=/ 的 Cookie,極易造成跨應用誤讀/誤刪。應為每個應用設置獨立路徑前綴(如 /app1/、/app2/)。

最佳實踐清單

  • 創建與刪除 Cookie 時 必須顯式指定相同 setPath()。
  • 鍵名建議統一小寫,避免 IE 大小寫行為差異。
  • 敏感數據勿存 Cookie;必存時啟用 HttpOnly、Secure 標誌(Servlet 3.0+ 支持 cookie.setHttpOnly(true))。
  • 集群環境下注意 Cookie 域名設置(setDomain(".example.com")),確保跨子域共享。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved