【问题标题】:Why is request.getsession() not returning the same session为什么 request.getsession() 不返回相同的会话
【发布时间】:2014-03-30 21:50:52
【问题描述】:

我正在开发一个单页 Web 应用程序。我已经包含了一个 java 过滤器来拦截 html 页面请求。所以在这个过滤器中,我正在使用request.getSession() 创建一个会话。 然后我明确设置了JSESSIONID cookie,因为我必须在响应标头Set-Cookie 中设置HttpOnly 标志,以防止通过客户端的document.cookie 进行XSS 攻击。

现在登录后我需要会话,所以我使用request.getSession() 访问会话。并根据HttpServletRequest javadoc HttpServletRequest javadoc

request.getSession() 返回与此请求关联的当前会话,或者如果请求没有会话,则创建一个。

但是登录后我得到了一个不同的会话。

【问题讨论】:

  • 定义“不同”会话?与您预期不同的实例还是...?
  • @user1109519 正在创建一个不同的会话 ID,因此向浏览器发送的 JSESSIONID cookie 与前一个不同。
  • 您是否每次都在过滤器中设置JSESSIONID?显示过滤器的一些代码。
  • 您是否尝试过在容器级别(例如 Tomcat)进行更改,而不是自己更改标头?见stackoverflow.com/questions/33412/…

标签: java session cookies cookie-httponly


【解决方案1】:

如果您使用相同的浏览器请求应用程序,我将重新运行相同的会话,如果您从另一个浏览器请求它将返回新的会话。

【讨论】:

    猜你喜欢
    • 2011-08-29
    • 2017-05-22
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-11
    相关资源
    最近更新 更多