Tôi vừa trải qua tất cả điều này để tìm kiếm một giải pháp đơn giản. Tôi bắt đầu nhìn vào nó từ quan điểm tomcat đầu tiên.
Tomcat không cung cấp quyền truy cập trực tiếp vào định cấu hình cookie miền cho phiên và tôi chắc chắn không muốn tùy chỉnh bản vá tomcat để khắc phục sự cố đó như được hiển thị trong một số bài đăng khác.
Các van trong tomcat cũng có vẻ là một giải pháp vấn đề do các hạn chế khi truy cập các tiêu đề & cookie được tích hợp vào đặc tả Servlet. Chúng cũng thất bại hoàn toàn nếu phản ứng http được cam kết trước khi nó được truyền cho van của bạn.
Vì chúng tôi ủy quyền các yêu cầu của mình thông qua Apache, sau đó tôi chuyển sang cách sử dụng apache để khắc phục sự cố thay thế.
Lần đầu tiên tôi đã thử chỉ thị mod_proxy ProxyPassReverseCookieDomain, nhưng nó không hoạt động đối với cookie JSESSIONID vì tomcat không đặt thuộc tính miền và ProxyPassReverseCookieDomain không thể hoạt động mà không có một số loại tên miền là một phần của cookie.
Tôi cũng đã gặp phải một hack bằng cách sử dụng ProxyPassReverseCookiePath nơi họ đã viết lại đường dẫn để thêm thuộc tính miền vào cookie, nhưng cảm giác đó lộn xộn cho một trang web sản xuất.
Cuối cùng tôi đã làm cho nó hoạt động bằng cách viết lại các tiêu đề phản hồi bằng mô-đun mod_headers trong apache như đã đề cập bởi Dave ở trên.
tôi đã thêm dòng sau bên trong định nghĩa máy chủ ảo:
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"
Trên đây nên tất cả trở thành một dòng duy nhất trong cấu hình. Nó sẽ thay thế bất kỳ thuộc tính miền JSESSIONID cookie nào bằng ".example.com". Nếu cookie JSESSIONID không chứa thuộc tính tên miền, thì mẫu sẽ thêm một giá trị có giá trị ".example.com". Là một phần thưởng, giải pháp này không bị vấn đề cookie JSESSION kép của các van.
Mẫu sẽ hoạt động với nhiều cookie trong tiêu đề Đặt cookie mà không ảnh hưởng đến các cookie khác trong tiêu đề. Nó cũng có thể sửa đổi để làm việc với các cookie khác bằng cách thay đổi JSESSIONID trong phần đầu tiên của mẫu thành tên cookie mà bạn mong muốn.
Tôi không phải là người dùng cũ, vì vậy tôi chắc chắn có một vài tối ưu hóa có thể được thực hiện cho mẫu, nhưng có vẻ như nó đang hoạt động cho chúng tôi cho đến nay.
Tôi sẽ cập nhật bài đăng này nếu tôi tìm thấy bất kỳ lỗi nào có mẫu. Hy vọng rằng điều này sẽ ngăn cản một vài người trong số các bạn phải trải qua vài ngày đáng thất vọng như tôi đã làm.
+1 Chỉ là những gì tôi đang tìm kiếm! Cuối cùng họ đã bao gồm các bản vá. – Kdeveloper