Struts 2和仅在Tomcat 6、Java 6上生成JSESSIONID cookie HttpOnly

Struts 2和仅在Tomcat 6、Java 6上生成JSESSIONID cookie HttpOnly,java,http,struts2,session-cookies,Java,Http,Struts2,Session Cookies,关于这个主题,网络上和这里都有很多信息,但我发现很多信息是矛盾的。所以我直截了当地问——我究竟如何才能将HttpOnly属性添加到JSESSIONID会话cookie中 我已尝试将此添加到我的webapp的web.xml: <session-config> <cookie-config> <http-only>true</http-only> </cookie-config> <session-config> 但在

关于这个主题,网络上和这里都有很多信息,但我发现很多信息是矛盾的。所以我直截了当地问——我究竟如何才能将HttpOnly属性添加到JSESSIONID会话cookie中

我已尝试将此添加到我的webapp的web.xml:

<session-config>
 <cookie-config>
  <http-only>true</http-only>
 </cookie-config>
<session-config>
但在我的Struts 2应用程序中,这种情况不会发生。我已经读到Struts并不是开箱即用的,你必须让每个ad每个动作都实现CookieProvider,实现getCookies方法,然后确保这些动作都连接到CookieInterceptor上

。。。其他帖子说您必须在Servlet过滤器中手动执行此操作

。。。但与此同时,在最近的其他帖子中,它说您不必做任何事情,这是容器的责任,如果您使用ServletAPI3.0,并将上述行添加到context.xml中,它应该可以工作。它与SpringMVC配合使用的事实告诉我,这可能是真的


有谁能确切地告诉我,我是否以编程方式做了一些事情?非常感谢。

最后我没有务实地做任何事情。没有必要

我仍然有点不确定,为什么只应该在Tomcat7和更高版本上工作的东西也可以在Tomcat6上工作。但无论如何,在我的poms中,我使用的是容器提供的javax.servlet-api 3.1.0:

<dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>javax.servlet-api</artifactId>
 <version>3.1.0</version>
 <scope>provided</scope>
</dependency>
在我的上下文xml文件中,我添加了“useHttpOnly=true”:

<Context useHttpOnly="true">

一切似乎都在起作用。一开始它似乎不起作用,使用browswer开发工具,我永远不会在JSESSIONID Cookie上看到“HttpOnly”。但后来我安装了BurpSuite来拦截我的所有http流量,果然,我可以看到“HttpOnly”属性就在那里。

你能澄清一下你是如何通过编程实现的吗?
<dependency>
 <groupId>javax.servlet</groupId>
 <artifactId>javax.servlet-api</artifactId>
 <version>3.1.0</version>
 <scope>provided</scope>
</dependency>
<Context useHttpOnly="true">