Приложение Tomcat создает новый сеанс при перезагрузке страницы при посещении через Apache - PullRequest
1 голос
/ 10 августа 2010

У нас есть приложение tomcat, которое отлично работает в IE7 / 8 и Firefox. Единственный браузер, с которым у нас есть проблемы (о которых мы сейчас заботимся), это Google Chrome. Пользователи могут легко перейти к приложению, войти в систему и делать все, что им нужно, в Firefox и IE. Однако при попытке войти в систему с помощью Chrome сеанс, очевидно, теряется сразу после входа в систему, и когда аутентифицированный пользователь пытается перейти на другую страницу, он возвращается к странице входа. Это происходит последовательно.

Я видел другие записи здесь и в других местах, которые предполагают, что виноват контекстный путь. Я попытался установить ProxyReverseCookiePath, но это не решает проблему.

Наша конфигурация виртуального хоста следующая:

<VirtualHost xxx.xxx.xxx.xxx:80>
    ServerAdmin admin@email.com
    ServerName subdomain.example.com

    DocumentRoot /var/www

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


    ProxyPass /context/ ajp://127.0.0.1:8009/context/
    ProxyPass / ajp://127.0.0.1:8009/context/
    #ProxyPassReverse /context/ http://127.0.0.1:8009/context/
    #ProxyPassReverse / http://127.0.0.1:8009/context/
    #ProxyPassReverseCookiePath /context/ /

</VirtualHost>

В том же экземпляре tomcat в контексте ROOT развернуто другое приложение. Я посмотрел на JSESSIONID, который установлен в файле cookie, который отправляется обратно в Chrome, и он изменяется при каждом запросе, в отличие от IE и Firefox.

Я в недоумении. Любые идеи приветствуются!

Мы используем Tomcat 6.0.23, а также Apache 2.2.14

.

1 Ответ

1 голос
/ 22 ноября 2010

Для справки: проблема была решена путем развертывания приложения в корневом пути контекста и удаления путей контекста из операторов прокси.

ProxyPass /context/ ajp://127.0.0.1:8009/
ProxyPass / ajp://127.0.0.1:8009/

Больше ничего не нужно было.

...