在Tomcat 7中通过http标头(cookie)禁用jsessionid

时间:2011-09-27 18:29:19

标签: session tomcat tomcat7 jsessionid

我希望禁用jsessionid在https标头中使用。 有没有办法关闭它或禁用在tomcat 7中设置为cookie?

我要求jsessionid嵌入到GET方法url名称值对中,或者成为POST请求名称值对的一部分。

我知道使用基于cookie的会话和URL重写的所有优点和缺点,但我对特定的restful web服务有特定的需求。

我需要tomcat 7接受jsessionid而不使用http标头:jsessionid。

感谢。

更新:

所以我再看了一下,找到了使用web.xml conf实现的this 但是,以下似乎不适用于Tomcat 7.

<session-config>
    <tracking-mode>URL</tracking-mode>
</session-config> 

是TC7没有完全实现servlet 3.0规范的情况吗?

1 个答案:

答案 0 :(得分:4)

web.xml设置适用于Tomcat 7.0.20。

记录并检查有效(可能是默认)会话跟踪模式:

logger.info("default STM: {}" , servletContext.getDefaultSessionTrackingModes());
logger.info("effective STM: {}" , servletContext.getEffectiveSessionTrackingModes());

也许您的应用会在会话跟踪模式的代码中覆盖某处。一个例子:

final Set<SessionTrackingMode> trackingModes = 
    Collections.singleton(SessionTrackingMode.COOKIE);
servletContext.setSessionTrackingModes(trackingModes);

检查代码中的ServletContext.setSessionTrackingModes()次来电。

也可以to set default session tracking modes in the Tomcat's context settings,但我发现web.xml设置会覆盖它们。