2012-01-16 14 views
5

seguente problema con bicromato di potassio ...:Chrome e JSESSIONID

ho l'esecuzione di un Grails 1.3.7 Application su un server. Ho notato che quando richiedo un contenuto statico (come i file html non dinamici) da Chrome, Chrome crea due cookie JSESSIONID. Il primo quando compare la finestra di login e il secondo dopo un login di successo. Se voglio aggiornare la pagina o richiedere un'altra risorsa, devo effettuare nuovamente il login. (Penso che Tomcat non capisca questi due cookie)

L'ho provato con FF, ma FF crea solo un cookie e funziona perfettamente. Inoltre, ho eseguito l'app localmente e funziona perfettamente anche con il chrome. Quindi, qualcosa con tomecat deve essere sbagliato.

Ambiente:

  • Grails-Application 1.3.7 (con la primavera-Security-Core 1.2.4)
  • Apache Tomcat 7 (su Windows Server 2008)

mio 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 

Grazie in anticipo.

Update 1:

ho ri-costruito, ri-distribuito l'applicazione e riavviato di nuovo Tomcat.

Ora ho notato: Chrome non genera più due cookie. Ma l'errore è lo stesso. Ogni volta che aggiorno o richiedo qualcosa, il JSESSIONID cambia e devo accedere di nuovo.

Una breve orologio sul tomcat-server visualizza una grande quantità di sessioni attive - quelle da cromo ...

Aggiornamento 2:

ho provato in locale sul server (con bicromato di potassio) :

  • localhost/frontend/frontend => Apache => FAIL
  • localhost: 8080/frontend/frontend => Tomcat => OK

Sembra che Apache sia il problema (?).

Soluzione:

li ho :) I Grails * .gsp-Modelli sempre richiesto il 'favicon.ico' sul ogni richiesta. Il motivo per cui l'errore è apparso sul contenuto statico (come i file html) è perché reindirizziamo a tali risorse dalla nostra applicazione Grails.

Così ho messo la favicon.ico nel posto giusto, e ora funziona :)

Questo errore riguarda solo Google Chrome, in FF e IE ha funzionato senza problemi.

+0

La domanda e la soluzione hanno effettivamente aiutato un gruppo di sviluppatori e ingegneri aziendali multinazionali a risolvere un problema di produzione che si verificava da mesi. Grazie. – rubynorails

risposta

6

Ho anche incontrato questo problema. Mi ci è voluto un po 'per capire cosa stava succedendo (incluso sniffare con Wireshark), e ancora più tempo per trovare una soluzione praticabile. Finalmente ho trovato questo thread https://vaadin.com/forum/-/message_boards/view_message/1216366

Si dice che questo è un problema con Chrome/Safari (browser Webkit?) E il modo in cui gestiscono i cookie reindirizzati. La semplice correzione è stato quello di aggiungere un context.xml alla directory META-INF nel mio progetto primavera contenente

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

e quindi ridistribuire il nuovo file di guerra. Ora tutto funziona come previsto.

+0

Bella soluzione, grazie per averlo pubblicato! :-) – Beastcraft

+0

Ma devo ammettere che all'improvviso ha smesso di funzionare per me poco dopo aver postato. le cuciture come questa erano parte della correzione, l'altra parte era di sostituire Jkmount con ProxyPass e ProxyPassReverse. Da quando ho apportato queste modifiche funziona davvero bene – Marqs

+0

Sì, penso anche che ci sarebbero alcuni passaggi per una soluzione buona e pulita. La mia correzione non era pulita come la tua correzione: P – Beastcraft