Я только что прошел через все это в поисках простого решения. Сначала я начал смотреть на это с точки зрения кота.
Tomcat не предоставляет прямого доступа к настройке cookie домена для сеанса, и я определенно не хотел настраивать исправление tomcat для решения этой проблемы, как показано в некоторых других публикациях.
Клапаны в tomcat также, похоже, являются решением проблемы из-за ограничений доступа к заголовкам и файлам cookie, встроенных в спецификацию сервлета. Они также полностью завершаются ошибкой, если http-ответ передается на ваш клапан.
Поскольку мы проксируем наши запросы через Apache, я затем перешел к тому, как использовать apache для решения проблемы.
Сначала я попробовал директиву mod_proxy ProxyPassReverseCookieDomain, но она не работает для файлов cookie JSESSIONID, поскольку tomcat не устанавливает атрибут домена, а ProxyPassReverseCookieDomain не может работать, если какой-либо домен не является частью файла cookie.
Я также натолкнулся на взлом, используя ProxyPassReverseCookiePath, где они переписывали путь для добавления атрибута домена к cookie, но это показалось грязным для рабочего сайта.
Я наконец-то заставил его работать, переписав заголовки ответа с помощью модуля mod_headers в apache, как упоминал Дэйв выше.
Я добавил следующую строку в определение виртуального хоста:
Header edit Set-Cookie "(JSESSIONID\s?=[^;,]+?)((?:;\s?(?:(?i)Comment|Max-Age|Path|Version|Secure)[^;,]*?)*)(;\s?(?:(?i)Domain\s?=)[^;,]+?)?((?:;\s?(?:(?i)Comment|Max-Age|Path|Version|Secure)[^;,]*?)*)(,|$)" "$1$2; Domain=.example.com$4$5"
Все вышеперечисленное должно быть одной строкой в конфигурации. Он заменит любой атрибут домена cookie JSESSIONID на «.example.com». Если файл cookie JSESSIONID не содержит атрибута домена, шаблон добавит файл со значением «.example.com». В качестве бонуса это решение не страдает от двойной проблемы с файлами cookie JSESSION для клапанов.
Шаблон должен работать с несколькими файлами cookie в заголовке Set-Cookie, не затрагивая другие файлы cookie в заголовке. Он также должен быть изменяемым для работы с другими файлами cookie, изменив JSESSIONID в первой части шаблона на любое имя файла cookie, которое вы пожелаете.
Я не являюсь опытным опытным пользователем, поэтому я уверен, что есть несколько оптимизаций, которые можно внести в шаблон, но, похоже, он пока работает для нас.
Я обновлю этот пост, если найду какие-либо ошибки с шаблоном. Надеюсь, это остановит некоторых из вас от того, что мне пришлось пережить последние пару дней разочарований, как я.