我们有以下情况:
JSESSIONID 是通过 cookie 和 URL 发送的,但是由于 Adobe Flash BUG,它们是不同的(实际上,cookie JSESSIONID 是错误的)。
我们想要做的是使用 URL JSESSIONID 而不是在 cookie 中发送的那个。换句话说,当我执行 request.getSession() 时,它应该返回与 URL 中的 ID 关联的 HttpSession,而不是 cookie 中的。
我们查看了 Tomcat7 源代码,事实上,Tomcat 首先解析 URL,搜索标识符。然后,如果它们存在,它会用 cookie SESSIONID 覆盖它。这是 CoyoteAdapter.java (tomcat 7.0.26) 中截取的代码:
String sessionID = null;
if (request.getServletContext().getEffectiveSessionTrackingModes()
.contains(SessionTrackingMode.URL)) {
// Get the session ID if there was one
sessionID = request.getPathParameter(
SessionConfig.getSessionUriParamName(
request.getContext()));
if (sessionID != null) {
request.setRequestedSessionId(sessionID);
request.setRequestedSessionURL(true);
}
}
// Look for session ID in cookies and SSL session
parseSessionCookiesId(req, request);
parseSessionSslId(request);
我们可以完全禁用 cookie JSESSIONID,但我们不能,因为我们将它用于网站中的所有 URL。我们想为这个特定的 URL 禁用 cookie。
可能吗?有没有其他想法或解决方法来解决这个问题?