次のような状況があります。
JSESSIONID は Cookie と URL の両方で送信されていますが、Adobe Flash BUG のため、それらは異なります (実際には、Cookie JSESSIONID は間違っています)。
やりたいことは、Cookie で送信された URL の代わりに、URL JSESSIONID を使用することです。つまり、request.getSession() を実行すると、Cookie ではなく URL の ID に関連付けられた HttpSession が返されるはずです。
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 をまったく無効にすることもできますが、Web サイトのすべての URL で使用しているため、無効にすることはできません。JUST THIS SPECIFIC URL の Cookie を無効にしたいと考えています。
出来ますか?この問題を解決するための他のアイデアや回避策はありますか?