Tomcat Cookie不能通过我的ProxyPass VirtualHost工作

在使用ProxyPass将端口80上的stream量redirect到通过Tomcat托pipe的Web应用程序时,我遇到了使Cookie工作的一些问题。

我启用cookie的动机是去除附加到URL的“jsessionid =”参数。

我在META-INF / my web应用程序的context.xml中启用了Cookie。
当我通过http:// url:8080 / webapp访问web应用程序时,它按预期工作,jsessionid参数在URL中不可见,而是存储在cookie中。

当通过apache2虚拟主机访问我的网站时,Cookie似乎不起作用,因为现在“jsessionid”被追加到URL中。 我该如何解决这个问题?

这是我的VHostconfiguration:

 <VirtualHost *:80>
         ServerName somedomain.no
         ServerAlias www.somedomain.no

         <代理*>
                命令否认,允许
                全部允许
         </代理>

         ProxyPreserveHostclosures
         ProxyPass / http:// localhost:8080 / webapp /
         ProxyPassReverse / http:// localhost:8080 / webapp /

         ErrorLog /var/log/apache2/somedomain.no.error.log
         CustomLog /var/log/apache2/somedomain.no.access.log合并
 </虚拟主机>

编辑:实际上,当我访问http://somedomain.no ,但Cookie的path设置为“/ webapp”时,cookie设置。

我想到了。

添加到VHostconfiguration:

 ProxyPassReverseCookiePath / webapp /

重映射URL是导致应用程序中的大多数问题的原因,因为在许多地方path不一致。 避免这样做并使访问者直接访问您的网页是一件好事。 例如,你可以写一个redirect规则,规定当访问者点击“/”时,他被redirect到“/ webapp /”,这样他使用真正的path,而不是一个重映射的。

随着你的重映射,你总会遇到这样的问题。 有时候,你会想知道为什么你会弄坏图像,你会发现应用程序生成的redirect中的“/ webapp / img / …”。 在其他时候,你会发现你的应用程序知道它的path,并自行生成/ webapp位置,导致访问者的浏览器上的/ webapp / webapp等…这些是导致至less一半pipe理员在使用URL重映射的地方工作,所以在改变之前,你应该考虑替代scheme。