如何在Jetty Server 8.1.3中为敏感Cookie添加HttpOnly属性
针对Jetty 8.1.3版本,你可以通过以下几种方式为会话Cookie设置HttpOnly属性:
方法1:通过ServletContextHandler设置初始化参数
你已经在使用setInitParameter配置会话Cookie名称,同样可以用这个方法添加HttpOnly属性:
((ServletContextHandler) context).setInitParameter("org.eclipse.jetty.servlet.SessionCookie", "SessionID"); // 添加HttpOnly属性配置 ((ServletContextHandler) context).setInitParameter("org.eclipse.jetty.servlet.SessionHttpOnly", "true");
方法2:在web.xml中配置全局上下文参数
如果更倾向于通过配置文件管理,在项目的web.xml中添加以下context-param:
<context-param> <param-name>org.eclipse.jetty.servlet.SessionCookie</param-name> <param-value>SessionID</param-value> </context-param> <context-param> <param-name>org.eclipse.jetty.servlet.SessionHttpOnly</param-name> <param-value>true</param-value> </context-param>
方法3:自定义SessionManager(进阶方案)
如果上述方法不生效,可以直接配置SessionManager的Cookie属性。以Jetty默认的HashSessionManager为例:
// 获取或创建SessionManager HashSessionManager sessionManager = new HashSessionManager(); // 设置会话Cookie名称 sessionManager.setSessionCookie("SessionID"); // 开启HttpOnly属性 sessionManager.setHttpOnly(true); // 将SessionManager关联到ServletContextHandler SessionHandler sessionHandler = new SessionHandler(sessionManager); context.setSessionHandler(sessionHandler);
Jetty 8的API确实和Jetty 9存在差异,SessionHttpOnly是Jetty 8专门用于控制会话Cookie HttpOnly属性的配置项,可直接对应你的需求场景。
内容的提问来源于stack exchange,提问作者user3506319
相关产品推荐
相关产品推荐

