jsessionid переопределен с помощью tomcat и веб-логики в качестве внутренних серверов

Для веб-приложения мы зависим от CMS, развернутой на веб-логике, и веб-приложения, развернутого на tomcat. Когда пользователь обращается к странице, динамический контент отображается из tomcat (включен липкий сеанс), а статический контент (js, css и т. Д.) Отображается из CMS (в веб-логике). Это приводит к конфликту файлов cookie JSESSIONID. JSESSIONID веб-логики переопределяет JSESSIONID Tomcat, и пользователь теряет содержимое, сохраненное в сеансе, при переходе в и из различных частей сайта.

Последовательность запросов приведена ниже.

[1]: http://i.stack.imgur.com/17Ft5.png

В качестве повязки мы написали правило для балансировщика нагрузки, чтобы исключить JSESSIONID для всех ответов, исходящих от CMS.

Хотя это сработало, ищу лучший способ справиться с этим.


person skonka    schedule 17.01.2015    source источник


Ответы (1)


  1. Почему ваша CMS устанавливает cookie? Нужны ли сеансы для предоставления этих файлов?

    Обычно статическим файлам сеанс не требуется. Следует разрешить их кеширование на прокси и на клиенте.

    Настройте свою CMS соответствующим образом. Если это веб-приложение, вы можете добавить фильтр, который удаляет заголовок Set-Cookie из его ответов (как вы это делаете на своем LB).

  2. Можно изменить имя файла cookie сеанса. Это настраивается с помощью элемента <session-config>/<cookie-config>/<name> в web.xml в веб-приложениях, которые соответствуют спецификации Servlet 3.0 (или более поздней).

    (Его также можно настроить как атрибут sessionCookieName в элементе Context в файле META-INF / context.xml, но рекомендуется использовать web.xml).

  3. Обратите внимание, что файлы cookie могут иметь атрибут Path. Браузер не будет отправлять cookie, если его путь не соответствует URL-адресу запроса. Файлы cookie с Path: / web и Path: / content могут успешно сосуществовать вместе.

    Tomcat поддерживает запросы, содержащие несколько файлов cookie JSESSIONID. Он просто выбирает тот, который соответствует существующему сеансу. Все остальные игнорируются.

person Konstantin Kolinko    schedule 18.01.2015