我的网络应用程序正在 Tomcat 中运行http://localhost:8080/example.com/
但它是从 Apache 提供的反向代理http://example.com/
在端口 80 上。我的网络应用程序查看request.getHeader("x-forwarded-host")
header 来知道它位于反向代理后面。当它(动态地)检测到这一点时,它会构建没有 Servlet 路径的 URL。
这对于除 JSESSIONID cookie 之外的所有内容都适用。它的路径设置为/example.com
代替/
当通过反向代理访问时。我不知道如何让我的代码告诉 Tomcat 在存在 cookie 时覆盖该 cookie 的路径x-forwarded-host
请求的标头。
我尝试自己从 Web 应用程序设置 JSESSIONID cookie,但这只会产生两个 Set-Cookie 标头,其中只有一个是正确的。
Tomcat6 使用 Servlet 2.3 规范。它不支持通过代码或 Tomcat 配置更改 cookie 路径。
我让它在 Apache 方面与一些人一起工作mod_proxy
指令。这ProxyPassReverseCookiePath
指令正是我想要的。它从 Tomcat 获取路径不正确的 cookie,并将其重写为正确的路径。
<VirtualHost *:*>
Servername example.com
ProxyRequests Off
ProxyPass / http://localhost:8080/example.com/
ProxyPassReverseCookiePath /example.com /
ProxyPassReverseCookieDomain localhost example.com
</VirtualHost>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)