Tomcat10版本context.xml如何配置Cookie有效期

冬萱酱_6085

冬萱酱_6085

2026-09-12

444人浏览

原创

tomcat 10 的 context.xml 不支持直接配置 cookie max-age,仅能通过 间接设置会话 cookie(如 jsessionid)的 maxage、httponly、secure 等属性;手动创建的 cookie 必须在代码中调用 setmaxage() 设置有效期。

tomcat10版本context.xml如何配置cookie有效期

Tomcat 10 的 context.xml 文件本身**不直接支持配置 Cookie 的有效期(max-age)**。有效期是 Cookie 的客户端行为属性,需通过 Servlet 容器的会话 Cookie 配置(即 <session-cookie></session-cookie> 子元素)间接控制,且仅对容器自动生成的会话 Cookie(如 JSESSIONID)生效。

Session Cookie 的 max-age 控制方式

context.xml 中,可通过 <sessioncookie></sessioncookie> 标签设置会话 Cookie 的生命周期参数。Tomcat 10 支持以下关键属性:

  • maxAge:单位为秒,指定 Cookie 在浏览器中保留的时长;设为 -1 表示会话级 Cookie(浏览器关闭即失效),设为正整数(如 604800)表示 7 天有效期
  • httpOnly:建议设为 true,防止 XSS 读取 Cookie
  • secure:设为 true 时,仅在 HTTPS 请求中发送(注意:需配合反向代理正确传递 X-Forwarded-Proto 头)
  • path:通常设为 /,确保整个应用路径下均可访问该 Cookie

示例配置(放在 META-INF/context.xml 或全局 conf/context.xml<context></context> 内):


  

注意:这个配置只影响新创建的会话 Cookie

修改 maxAge 后,已有浏览器中已存在的 JSESSIONID Cookie 不会自动更新。必须满足以下条件才能生效:

第31天_COOKIE和SESSION.zip
第31天_COOKIE和SESSION.zip

第31天_COOKIE和SESSION

下载
  • 用户使用新会话(如清空浏览器 Cookie、使用无痕窗口,或原会话已过期)
  • 服务端调用 request.getSession(true) 创建新会话时,Tomcat 才会按此配置生成并写入响应头
  • 前端请求需携带凭证(如 credentials: 'include'),否则 Cookie 不会被发送

自定义业务 Cookie 的有效期不能靠 context.xml

如果你在代码中手动创建 Cookie(如 new Cookie("token", "abc")),其有效期必须在 Java 代码中显式设置:

  • cookie.setMaxAge(60 * 60 * 24); // 24 小时
  • cookie.setPath("/");
  • cookie.setHttpOnly(true);
  • cookie.setSecure(true);
  • 最后调用 response.addCookie(cookie)

context.xml 对这类手动 Cookie 完全无影响。

常见误区提醒

不要混淆以下概念:

  • <session-config><session-timeout></session-timeout></session-config>(web.xml 中):控制服务端 Session 对象存活分钟数,和 Cookie 的 maxAge 无关
  • maxAge = -1 ≠ 立即失效,而是“会话级”,依赖浏览器进程生命周期
  • 设了 secure="true" 却仍看到 HTTP 下 Cookie 被发送?大概率是反向代理未配置 RemoteIpValve,导致 Tomcat 误判协议为 HTTP

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
eclipse教程
eclipse教程

php中文网为大家带来eclipse教程合集,eclipse是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。php中文网还为大家带来eclipse的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

530

5

eclipse怎么设置中文
eclipse怎么设置中文

eclipse设置中文的方法:除了设置界面为中文外,你还可以为Eclipse添加中文插件,以便更好地支持中文编程。例如,你可以安装EBNF插件来支持中文变量名,或安装Chinese Helper来提供中文帮助文档。本专题为大家提供eclipse设置中文相关的各种文章、以及下载和课程。

2023.07.24

4426

6

c语言编程软件有哪些
c语言编程软件有哪些

c语言编程软件有GCC、Clang、Microsoft Visual Studio、Eclipse、NetBeans、Dev-C++、Code::Blocks、KDevelop、Sublime Text和Atom。更多关于c语言编程软件的问题详情请看本专题的文章。php中文网欢迎大家前来学习。

2023.11.02

6659

18

Eclipse版本号有哪些区别
Eclipse版本号有哪些区别

区别:1、Eclipse 3.x系列:Eclipse的早期版本,包括3.0、3.1、3.2等;2、Eclipse 4.x系列:Eclipse的最新版本,包括4.0、4.1、4.2等;3、Eclipse IDE for Java Developers等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

2564

5

eclipse和idea有什么区别
eclipse和idea有什么区别

eclipse和idea的区别:1、平台支持;2、内存占用;3、插件系统;4、智能代码提示;5、界面设计;6、调试功能;7、学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.02.23

622

5

eclipse设置中文全教程
eclipse设置中文全教程

本专题整合了eclipse设置中文相关教程,阅读专题下面的文章了解更多详细操作。

2025.10.10

2846

11

eclipse字体放大教程
eclipse字体放大教程

本专题整合了eclipse字体放大教程,阅读专题下面的文章了解更多详细内容。

2025.10.10

2865

12

eclipse左边栏不见了解决方法
eclipse左边栏不见了解决方法

本专题整合了eclipse左边栏相关教程,阅读专题下面的文章了解更多详细内容。

2025.10.15

388

3

eclipse字体相关教程
eclipse字体相关教程

本专题整合了eclipse字体设置相关教程,阅读专题下面的文章了解更多详细内容。

2025.11.26

814

12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
php注册登录系统开发实战
php注册登录系统开发实战

共10课时 | 13.8万人学习

PHP基于Cookie的购物车模块设计
PHP基于Cookie的购物车模块设计

共10课时 | 11.1万人学习

第三期培训_PHP开发
第三期培训_PHP开发

共116课时 | 32.1万人学习