2010-08-10 3 views
1

Nous avons une application tomcat qui fonctionne très bien dans IE7/8 et Firefox. Le seul navigateur avec lequel nous avons des problèmes (ce qui nous intéresse en ce moment) est Google Chrome. Les utilisateurs peuvent naviguer vers l'application et se connecter et faire tout ce qu'ils doivent faire dans Firefox et IE. Cependant, lorsque vous essayez de vous connecter avec Chrome, la session est apparemment perdue immédiatement après la connexion et lorsque l'utilisateur authentifié tente de naviguer vers une autre page, il est renvoyé à la page de connexion. Cela arrive régulièrement.L'application Tomcat crée une nouvelle session sur le rechargement de la page lors de la visite par apache

J'ai vu d'autres entrées ici et ailleurs qui suggèrent que le chemin du contexte pourrait être à blâmer. J'ai essayé de définir un ProxyReverseCookiePath mais cela ne résout pas le problème.

Notre configuration d'hôte virtuel est comme suit:

<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> 

Il y a une autre application déployée sur la même instance de tomcat dans le contexte ROOT. J'ai regardé le JSESSIONID qui est défini dans le cookie, qui est renvoyé à Chrome et il change à chaque demande, tandis que ce n'est pas le cas pour IE et Firefox.

Je suis à perte ici. Toutes les idées sont les bienvenues!

Nous utilisons tomcat 6.0.23 ainsi que apache 2.2.14

+0

Je suis confronté au même problème avec Tomcat 5.5 et Chrome 9.0.597.84 (le même effet était avec Chrome 8). Quelle version utilisez-vous? – basZero

+0

Mes excuses pour ne pas réaliser qu'il y avait une réponse. Je ne sais pas si c'est toujours pertinent: je n'ai aucune idée de la version de Chrome que j'utilisais à l'époque. tomcat était 6.0.23 et apache 2.2.14 – Marco

+1

@basZero: Il s'est avéré que le navigateur n'enverrait pas toujours le cookie au serveur ou le serveur le rejetterait s'il pensait que le chemin du contexte ne correspondait pas. Ceci ici devrait faire l'affaire. Il fait pour moi: ProxyPass/contexte AJP: //127.0.0.1: 8009/contexte/ ProxyPassReverse/contexte/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/ La dernière ligne garantit que le chemin écrit dans le cookie est correct. – Marco

Répondre

1

Pour référence: Le problème a été résolu en déployant l'application au chemin de contexte racine et en supprimant les chemins de contexte des déclarations de procuration.

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

Rien d'autre n'était nécessaire.

Questions connexes