在使用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。