Servlet+mod重写:HttpSession.getAttribute()返回null



我有一个Servlet+JSP应用程序在Tomcat上运行。我使用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。我看起来会话被"绑定"到某种主目录,该目录通过重写规则来更改。是否可以强制会话忽略子目录?我是不是错过了什么?

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

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

最新更新