2010-08-10 1 views
1

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

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

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

<VirtualHost xxx.xxx.xxx.xxx:80> 
    ServerAdmin [email protected] 
    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> 

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

Здесь я затрудняюсь. Любые идеи приветствуются!

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

+0

Я столкнулся с той же проблемой с Tomcat 5.5 и Chrome 9.0.597.84 (тот же эффект был с Chrome 8). Какую версию вы использовали? – basZero

+0

Приношу свои извинения за то, что вы не поняли, что есть ответ. Не уверен, что это все еще актуально: я понятия не имею, какая версия Chrome была той, что я использовал в то время. tomcat был 6.0.23 и apache 2.2.14 – Marco

+1

@basZero: Оказалось, что браузер не всегда отправляет файл cookie на сервер или сервер отбрасывает его, если считает, что путь контекста не соответствует. Это должно сделать трюк. Это делает для меня: ProxyPass/context ajp: //127.0.0.1: 8009/context/ ProxyPassReverse/context/http://127.0.0.1:2000/context/ ProxyPass/ajp: //127.0.0.1: 8009/context/ ProxyPassReverse/http://127.0.0.1:2000/context/ ProxyPassReverseCookiePath/context/ Последняя строка гарантирует правильность пути, написанного в файле cookie. – Marco

ответ

1

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

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

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