如果cookie和jsessionid存储在浏览器中,则jsessionid传入url

时间:2017-09-08 05:42:23

标签: java google-chrome session tomcat cookies

我的网络应用程序在URL中传递jsessionid,而在其他浏览器和机器中使用cookie基本会话管理是所需的行为。

要解决此问题,我从语言环境存储中删除了存储的cookie和jsessionid,然后开始使用cookie基本会话管理而不是URL重写。

有人可以解释为什么会发生这种情况,存储cookie和jsessionid停止应用程序以使用cookie库管理。我只需要在应用程序中使用cookie基本会话管理我是如何做到的。

环境:

Chrome浏览器,Struts 2,Tomcat 7,Java 8

提前感谢。

1 个答案:

答案 0 :(得分:1)

jsessionid是Java应用程序/ Web服务器用于跟踪用户会话的特殊cookie(用于识别用户是旧用户,例如已登录的用户)。对于服务器的第一个请求,浏览器不会发送任何cookie。因此,服务器不知道客户端是否支持cookie。对于此服务器,在cookie和URL(URL重写)中发送jsessionid。但是对于下一个请求,cookie将可用(从之前的请求浏览器将存储服务器发送的cookie,并且对于相同的上下文,它现在知道已经有cookie,所以发送它)。这就是为什么对于下一个请求,您在URL中看不到jsessionid。要强制服务器仅使用基于COOKIE的跟踪,您需要在web.xml

中添加以下片段
<session-config>
  <!-- Only cookie based tracking -->
  <tracking-mode>COOKIE</tracking-mode>
</session-config>