Servlet + mod-rewrite:HttpSession.getAttribute()返回null
问题描述:
我有一个在Tomcat上运行的Servlet + JSP应用程序。我用MOD-AJP使用这些重写规则重定向在Tomcat阿帕奇:Servlet + mod-rewrite:HttpSession.getAttribute()返回null
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
。网页浏览器会忽略像/subdir1
这样的网址上的此Cookie,因为它与Cookie的路径不匹配。
这里是改变cookie的路径来解决一个问题,像这样的一些例子:How to properly set JSESSIONID cookie path behind reverse proxy
谢谢。有用! – evg02gsa3 2015-02-11 14:19:43