如何正确设置反向代理后面的JSESSIONID cookie路径

我的Web应用程序在Tomcat上运行,http://localhost:8080/example.com/但正在从http://example.com/端口80上提供服务的Apache反向代理。我的Web应用程序查看request.getHeader("x-forwarded-

host")标头以了解它在反向代理后面。当它(动态)检测到此错误时,将构建没有servlet路径的URL。

对于JSESSIONID

cookie之外的所有内容,此方法都适用。它的路径设置为,/example.com而不是/通过反向代理访问时的路径。当x-forwarded-

host请求上有标头时,我无法弄清楚我的代码如何告诉Tomcat覆盖该cookie的路径。

我尝试自己从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>

以上是 如何正确设置反向代理后面的JSESSIONID cookie路径 的全部内容, 来源链接: utcz.com/qa/428875.html

回到顶部