【问题标题】:jsessionid passed in url if cookie and jsessionid stored by browser如果浏览器存储cookie和jsessionid,则jsessionid传入url
【发布时间】:2018-02-16 23:04:42
【问题描述】:

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

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

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

环境:

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

提前致谢。

【问题讨论】:

    标签: java google-chrome session tomcat cookies


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-10-30
      • 2012-01-22
      • 2021-06-28
      • 2013-11-01
      • 2014-10-31
      • 2016-09-01
      • 2017-02-07
      • 1970-01-01
      相关资源
      最近更新 更多