【发布时间】:2018-02-03 18:26:24
【问题描述】:
我正在使用 Tomcat 7.0.84,而我的 Web 应用程序使用 Servlet 3.0 部署描述符。 web.xml 文件包含以下内容:
<session-config>
<cookie-config>
<name>JSESSIONID</name>
<http-only>false</http-only>
</cookie-config>
<tracking-mode>URL</tracking-mode>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
我有一个桌面应用程序,它登录到网络应用程序并建立一个会话。作为对用户操作的响应,它调用浏览器中的 URL。由于我希望浏览器使用相同的会话登录,因此我附加了 jsessionid 路径参数,如下所示:
http://server/contextroot/path/;jsessionid=8BDF744802E7850D5AA4AB6535163504
我完全关闭了我的浏览器,因此当生成 URL 时,不会发送以前的会话 cookie。 (我的默认浏览器是 chrome,我验证是这种情况。)
我也在代码中启用了 URL 跟踪模式,通过记录返回值 ServletContext.getEffectiveSessionTrackingModes.
我期待的是浏览器请求自动获取由 ;jsessionid 参数指示的会话,但它没有发生。每次 Tomcat 在其响应中包含一个新的会话 cookie。
此代码用于与以前版本的 Tomcat(可能是 5.5)和 servlet 2.3 规范一起使用。我在 Servlet 3.0 规范或 Tomcat 文档中没有看到任何表明这不应该工作的内容,而且我完全没有想法。
有谁知道为什么这没有按预期工作?
【问题讨论】:
标签: java session tomcat servlets jsessionid