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

hic*_*ell 5 session tomcat jsessionid tomcat7

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

我要么希望jsessionid嵌入到GET方法url名称值对中,要么成为POST请求名称值对的一部分.

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

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

谢谢.

更新:

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

<session-config>
    <tracking-mode>URL</tracking-mode>
</session-config> 
Run Code Online (Sandbox Code Playgroud)

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

pal*_*int 4

web.xml设置适用于 Tomcat 7.0.20。

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

logger.info("default STM: {}" , servletContext.getDefaultSessionTrackingModes());
logger.info("effective STM: {}" , servletContext.getEffectiveSessionTrackingModes());
Run Code Online (Sandbox Code Playgroud)

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

final Set<SessionTrackingMode> trackingModes = 
    Collections.singleton(SessionTrackingMode.COOKIE);
servletContext.setSessionTrackingModes(trackingModes);
Run Code Online (Sandbox Code Playgroud)

检查代码中的ServletContext.setSessionTrackingModes()调用。

也可以在 Tomcat 的上下文设置中设置默认会话跟踪模式,但我发现web.xml设置会覆盖它们。