Я только что прошел через все это, ища простое решение. Сначала я начал смотреть на него с точки зрения кота.
Tomcat не дает прямого доступа к настройке файла cookie домена для сеанса, и я определенно не хотел, чтобы пользовательский патч tomcat исправил эту проблему, как показано в некоторых других сообщениях.
Клапаны в tomcat также являются решением проблемы из-за ограничений на доступ к заголовкам & куки, встроенные в спецификации Servlet. Они также терпят неудачу, если 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». В качестве бонуса это решение не страдает от двойной проблемы куки JSESSION для клапанов.
Шаблон должен работать с несколькими куками в заголовке Set-Cookie, не затрагивая другие файлы cookie в заголовке. Также необходимо модифицировать работу с другими файлами cookie, изменив JSESSIONID в первой части шаблона на то, что вы хотите получить в cookie.
Я не являюсь пользователем системы reg-ex, поэтому я уверен, что есть несколько оптимизаций, которые могут быть сделаны для шаблона, но, похоже, он работает для нас до сих пор.
Я обновлю это сообщение, если найду какие-либо ошибки с рисунком. Надеюсь, это остановит некоторых из вас от необходимости проходить через последние пару дней разочарования, как я.
+1 Только то, что я искал! Наконец, они включили патч. – Kdeveloper 2010-11-12 10:32:51