Хром и JSESSIONID - PullRequest
       35

Хром и JSESSIONID

5 голосов
/ 16 января 2012

Следующая проблема с chrome ...:

Я запускаю приложение Grails 1.3.7 на сервере.Я заметил, что когда я запрашиваю статический контент (например, нединамические html-файлы) из Chrome, Chrome создает два JSESSIONID-Cookies.Первый, когда появляется окно входа в систему, и второй после успешного входа в систему.Если я хочу обновить страницу или запросить другой ресурс, я должен снова войти в систему.(Я думаю, потому что Tomcat не понимает эти два куки)

Я пробовал это с FF, но FF просто создает один Cookie, и он отлично работает.Кроме того, я запускал приложение локально, и оно отлично работает даже с Chrome.Итак, что-то с tomecat должно быть не так.

Среда:

  • Grails-Application 1.3.7 (с Spring-Security-Core 1.2.4)
  • ApacheTomcat 7 (в Windows Server 2008)

Мой 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

Заранее спасибо.

Обновление 1:

Я пересобрал, повторно развернул приложение и снова перезапустил tomcat.

Теперь я заметил: Chrome больше не генерирует два куки.Но ошибка та же.Каждый раз, когда я обновляю или запрашиваю что-то, JSESSIONID меняется, и мне приходится снова входить в систему.

Короткие часы на tomcat-сервере отображают большое количество активных сессий - тех из chrome ...

Обновление 2:

Я попробовал это локально на сервере (с хромом):

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

Кажется, проблема в Apache (?).

Решение:

Я понял :) Шаблоны Grails * .gsp всегда запрашивали 'favicon.ico' для каждый запрос.Причина появления ошибки в статическом контенте (например, html-файлах) заключается в том, что мы перенаправляем эти ресурсы из нашего приложения Grails.

Итак, я поместил favicon.ico в нужное место, и теперьэто работает:)

Эта ошибка касается только Google Chrome, в FF и IE она работала без проблем.

1 Ответ

6 голосов
/ 20 марта 2012

Я тоже столкнулся с этой проблемой.Мне потребовалось некоторое время, чтобы выяснить, что происходит (включая прослушивание с помощью Wireshark), и еще больше времени, чтобы найти жизнеспособное решение.Наконец я нашел эту ветку https://vaadin.com/forum/-/message_boards/view_message/1216366

Похоже, что это проблема Chrome / Safari (браузеров Webkit?) И способа, которым они обрабатывают перенаправленные куки.Простым исправлением было добавление context.xml в каталог META-INF в моем весеннем проекте, содержащем

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

, а затем повторное развертывание нового файла войны.Теперь все работает, как задумано.

...