2012-01-16 41 views
5

Siguiente problema con chrome ...:Chrome y JSESSIONID

He estado ejecutando una aplicación Grails 1.3.7 en un servidor. Me he dado cuenta, cuando solicito un contenido estático (como archivos html no dinámicos) de Chrome, Chrome crea dos JSESSIONID-Cookies. El primero cuando aparece la ventana de inicio de sesión, y el segundo después de un inicio de sesión exitoso. Si deseo actualizar la página o solicitar otro recurso, debo iniciar sesión de nuevo. (Creo que porque Tomcat no entiende esas dos cookies)

Lo he intentado con FF, pero FF acaba de crear una Cookie y está funcionando perfectamente. Además, he ejecutado la aplicación localmente, y funciona perfectamente con Chrome. Entonces, algo con Tomecat debe estar mal.

Ambiente:

  • griales de la aplicación 1.3.7 (con la primavera-Seguridad-Core 1.2.4)
  • Apache Tomcat 7 (en Windows Server 2008)

Mi httpd. conf:

ProxyPass /manager http://myUrl:8080/manager 
ProxyPass /myGrailsApp http://myUrl:8080/myGrailsApp 
ProxyPassReverse /manager http://myUrl:8080/manager 
ProxyPassReverse /myGrailsApp http://myUrl:8080/myGrailsApp 

ProxyPass/http://myUrl:8080/myGrailsApp/frontend 
ProxyPassReverse/http://myUrl:8080/myGrailsApp/frontend 

Gracias de antemano.

Actualización 1:

Me re-edificada para re-desplegado la aplicación y reiniciar Tomcat nuevo.

Ahora me di cuenta: Chrome ya no genera dos cookies. Pero el error es el mismo Cada vez que actualizo o solicito algo, el JSESSIONID cambia y tengo que volver a iniciar sesión.

Un reloj corto en el gato-servidor muestra una gran cantidad de sesiones activas - los de cromo ...

Actualización 2:

lo probé localmente en el servidor (con cromo) :

  • localhost/myApp/frontend => Apache => FALLO
  • localhost: 8080/myApp/frontend => Tomcat => OK

Parece que Apache es el problema (?).

Solución:

lo tengo :) Los Grails * .gsp-plantillas siempre se pidió al 'favicon.ico' en cada petición. El motivo por el que apareció el error en el contenido estático (como los archivos html) se debe a que redirigimos a esos recursos desde nuestra aplicación Grails.

Así que he puesto el favicon.ico en el lugar correcto, y ahora se trabaja :)

Este error solo se refiere a Google Chrome, en FF y el IE funcionó sin ningún problema.

+0

Su pregunta y solución realmente ayudaron a un grupo de desarrolladores e ingenieros de empresas multinacionales a resolver un problema de producción que había estado ocurriendo durante meses. Gracias. – rubynorails

Respuesta

6

También me encontré con este problema. Me tomó un tiempo descubrir qué estaba pasando (incluso olfatear con Wireshark) y aún más tiempo para encontrar una solución viable. Finalmente encontré este hilo https://vaadin.com/forum/-/message_boards/view_message/1216366

Parece que esto es un problema con Chrome/Safari (¿navegadores webkit?) Y la forma en que manejan las cookies redirigidas. La solución simple fue añadir un context.xml al directorio META-INF en mi proyecto que contiene la primavera

<?xml version='1.0' encoding='utf-8'?> 
<Context sessionCookiePathUsesTrailingSlash='false'> 
</Context> 

y luego volver a desplegar el nuevo archivo de la guerra. Ahora todo está funcionando según lo previsto.

+0

¡Buena solución, gracias por publicarlo! :-) – Beastcraft

+0

Pero tengo que admitir que de repente dejó de funcionar para mí poco después de publicar. costuras como tis eran parte del arreglo, la otra parte era reemplazar Jkmount con ProxyPass y ProxyPassReverse. Desde que hice esos cambios funciona realmente bien – Marqs

+0

Sí, también creo que hay algunos pasos para una solución buena y limpia. Mi solución no era tan limpia como la suya: P – Beastcraft

Cuestiones relacionadas