【发布时间】: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,因此向浏览器发送的
JSESSIONIDcookie 与前一个不同。 -
您是否每次都在过滤器中设置
JSESSIONID?显示过滤器的一些代码。 -
您是否尝试过在容器级别(例如 Tomcat)进行更改,而不是自己更改标头?见stackoverflow.com/questions/33412/…。
标签: java session cookies cookie-httponly