Websphere 8.5会话cookie问题

时间:2016-03-25 04:02:15

标签: session session-cookies servlet-filters websphere-8 jsessionid

为了解决与cookie相关的漏洞,我在一个过滤器中编写了请求和响应的包装器。 在请求包装器中,我使用getSession方法中的以下代码覆盖cookie(重写)

HttpSession session = getHttpServletRequest().getSession(false);
String value="JSESSIONID=" + session.getId() +"; Path="+getHttpServletRequest().getContextPath()+"/";
        ((HttpServletResponse)response).setHeader("Set-Cookie",value);

在响应过滤器中,我已经覆盖了addCookie和addHeader方法来执行相同操作。

上面的代码适用于tomcat和jboss,但它在websphere 8.5上存在问题。

对于websphere 8.5,它在getSession方法getHttpServletRequest().getSession(false)

中给出了会话null

当我检查来自浏览器开发者工具的网络流量时,对于websphere,我发现在响应中添加了多个cookie(一个是我们添加的,另一个是由服务器添加的),为了避免这种情况,我已经在websphere会话管理中设置了禁用曲奇饼干。这解决了多个cookie问题,但空会话问题仍然存在。

如何解决这个问题?

由于

1 个答案:

答案 0 :(得分:0)

您的代码中不应该有一个明确的“false”参数,您应该传递您的包装器传递的内容。您可能会破坏传递true的呼叫者,因此无法正确建立新会话。

您也可能会破坏会话亲缘关系,因为您没有复制会话ID后面的cloneID。

为什么不在配置中设置cookie路径,如果你打算改变它?