Tomcat cookie 无法通过我的 ProxyPass VirtualHost 工作

发布于 2024-08-28 22:20:08 字数 1018 浏览 5 评论 0原文

当使用 ProxyPass 将端口 80 上的流量重定向到通过 Tomcat 托管的 Web 应用程序时,我在获取 cookie 时遇到一些问题。

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

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

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

这是我的 VHost 配置:

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

        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>

        ProxyPreserveHost Off
        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 combined
</VirtualHost>

编辑:实际上正在设置 cookie。我猜测问题在于 cookie 包含“Path: /webapp”。

I'm having some issues with getting cookies to work when using a ProxyPass to redirect traffic on port 80 to a web-application hosted via Tomcat.

My motivation for enabling cookies is to get rid of the "jsessionid=" parameter that is appended to the URLs.

I've enabled cookies in my context.xml in META-INF/ for my web application.
When I access the webapplication via http://url:8080/webapp it works as expected, the jsessionid parameter is not visible in the URL, instead it's stored in a cookie.

When accessing my website via an apache2 virtualhost the cookies doesn't seem to work because now "jsessionid" is being appended to the URLs. How can I solve this issue?

Here's my VHost configuration:

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

        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>

        ProxyPreserveHost Off
        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 combined
</VirtualHost>

EDIT: The cookie is actually being set. I am guessing that the problem is that the cookie contains the "Path: /webapp".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

走野 2024-09-04 22:20:08

我想通了。

将其添加到 VHost 配置中:

ProxyPassReverseCookiePath /webapp /

I figured it out.

Add this to the VHost configuration:

ProxyPassReverseCookiePath /webapp /
此生挚爱伱 2024-09-04 22:20:08

感谢您的回答,我的完整工作配置如下:

<VirtualHost *:80>
    ServerName extener_url.xxx.co.zm
    ProxyRequests Off
    ProxyPass / http://localhost:8080/app/
    ProxyPassReverse / http://localhost:8080/app/
    ProxyPassReverseCookiePath /app /

    ServerAdmin webmaster@localhost
    <Proxy *>
            Order deny,allow
            Allow from all  
    </Proxy>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>

Thanks for the answer, my complete working configuration looks like this:

<VirtualHost *:80>
    ServerName extener_url.xxx.co.zm
    ProxyRequests Off
    ProxyPass / http://localhost:8080/app/
    ProxyPassReverse / http://localhost:8080/app/
    ProxyPassReverseCookiePath /app /

    ServerAdmin webmaster@localhost
    <Proxy *>
            Order deny,allow
            Allow from all  
    </Proxy>

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文