gpt4 book ai didi

java - 忽略 Tomcat 中特定 URI 的 cookie

转载 作者:行者123 更新时间:2023-11-28 21:54:07 24 4
gpt4 key购买 nike

我们有以下情况:

JSESSIONID 由 cookie 和 URL 发送,但由于 Adob​​e Flash BUG,它们是不同的(实际上,cookie JSESSIONID 是错误的)。

我们想要做的是使用 URL JSESSIONID 而不是在 cookie 中发送的那个。换句话说,当我执行 request.getSession() 时,它应该返回与 URL 中而不是 cookie 中的 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,但我们做不到,因为我们将它用于网站中的所有 URL。我们只想为这个特定的 URL 禁用 cookie。

这可能吗?有没有其他想法或解决方法来解决这个问题?

最佳答案

您可以实现自定义 servlet filter这将用您自己的包装器替换请求、响应和 session 对象。然后包装器可以根据 URL 表现不同,例如委托(delegate)或不委托(delegate)给原始 session 实例。尽管如果不更改 Tomcat 代码,您将无法访问其他一些 ID 的 session 数据。

关于java - 忽略 Tomcat 中特定 URI 的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10192778/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com