【问题标题】:Servlet + mod-rewrite: HttpSession.getAttribute() returns nullServlet + mod-rewrite:HttpSession.getAttribute() 返回 null
【发布时间】:2015-04-09 14:58:46
【问题描述】:

我有一个在 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。我看起来会话被“绑定”到某种通过重写规则改变的主目录。是否可以强制会话忽略子目录?我错过了什么吗?

【问题讨论】:

    标签: jsp servlets mod-rewrite httpsession mod-proxy-ajp


    【解决方案1】:

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

    以下是一些更改 cookie 路径以解决此类问题的示例:How to properly set JSESSIONID cookie path behind reverse proxy

    【讨论】:

      猜你喜欢
      • 2019-08-03
      • 2014-09-21
      • 1970-01-01
      • 2019-03-04
      • 2012-07-10
      • 2021-12-10
      • 2023-03-30
      • 2021-01-27
      • 2017-01-05
      相关资源
      最近更新 更多