【问题标题】:Disable jsessionid via http header (cookie) in Tomcat 7在 Tomcat 7 中通过 http 标头(cookie)禁用 jsessionid
【发布时间】:2014-04-09 16:15:17
【问题描述】:

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

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

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

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

谢谢。

更新:

所以我环顾四周,发现this 是使用 web.xml conf 实现的。
但是,以下内容似乎不适用于 Tomcat 7。

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

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

【问题讨论】:

    标签: session tomcat tomcat7 jsessionid


    【解决方案1】:

    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 设置会覆盖它们。

    【讨论】:

      猜你喜欢
      • 2013-02-06
      • 2011-06-11
      • 2013-08-02
      • 1970-01-01
      • 2012-02-13
      • 2012-01-19
      • 2011-06-23
      • 2017-11-24
      相关资源
      最近更新 更多