0

我有一个在 Tomcat 上运行的 Servlet + JSP 应用程序。我使用 mod-ajp 使用这些重写规则在 Tomcat 上重定向 apache:

RewriteRule ^/myapp/(.+) ajp://localhost:8009/myapp/$1 [P]
RewriteRule /myapp/(.+) ajp://localhost:8009/myapp/$1 [P]

但是,当我使用这些重写规则时,它适用于会话:

RewriteRule ^/subdir1/subdir2/subdir3/myapp/(.+) ajp://localhost:8009/myapp/$1 [P]
RewriteRule /subdir1/subdir2/subdir3/myapp/(.+) ajp://localhost:8009/myapp/$1 [P]

HttpSession.getAttribute("nameOfMyAttribute") 返回 null。我看起来会话被“绑定”到某种通过重写规则改变的主目录。是否可以强制会话忽略子目录?我在那里错过了什么吗?

4

1 回答 1

1

Tomcat 会将 JSESSIONID cookie 的路径设置为您的应用程序的路径。在您的情况下,cookie 的路径将是/myapp. Web 浏览器会忽略 URL 上的这个 cookie,/subdir1因为它与 cookie 的路径不匹配。

以下是一些更改 cookie 路径以解决此类问题的示例:如何在反向代理后面正确设置 JSESSIONID cookie 路径

于 2015-02-10T15:04:36.957 回答