2012-01-16 3 views
5

Следующая проблема с хром ...:Хром и JSESSIONID

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

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

Enviroment:

  • Grails-приложения 1.3.7 (с Spring-Security-Core 1.2.4)
  • Apache Tomcat 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 

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

Update 1:

я вновь строящихся, повторно развернуть приложение и снова перезапустить Tomcat.

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

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

Update 2:

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

  • локальный/MYAPP/интерфейс => Apache => FAIL
  • локальный: 8080/MYAPP/интерфейс => Tomcat => OK

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

Решение:

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

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

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

+0

Ваш вопрос и решение действительно помогли группе многонациональных корпоративных разработчиков и инженеров решить проблему производства, которая происходила в течение нескольких месяцев. Спасибо. – rubynorails

ответ

6

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

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

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

, а затем передислокации новый архив войны. Теперь все работает по назначению.

+0

Хорошее решение, спасибо, что разместили его! :-) – Beastcraft

+0

Но я должен признать, что он внезапно прекратил работать для меня вскоре после того, как я опубликовал. такие швы, как tis, были частью исправления, другая часть должна была заменить Jkmount ProxyPass и ProxyPassReverse. Так как я сделал эти изменения, он отлично работает – Marqs

+0

Да, я также думаю, что было бы несколько шагов для хорошего и чистого решения. Мое исправление не было таким чистым, как ваше исправление: P – Beastcraft

Смежные вопросы