私はこのすべてを単純な解決策を探しています。私は最初にTomcatの視点から見始めた。
Tomcatは、セッションのためのドメインクッキーの設定に直接アクセスすることはできません。他のいくつかのポストに示されているように、問題を修正するためにTomcatをカスタムパッチすることは間違いありません。
サーブレット仕様に組み込まれているクッキー&にアクセスする際の制限により、Tomcatのバルブも問題解決のようです。また、HTTP応答がコミットされてからバルブに渡されると、それらは完全に失敗します。
私たちはApacheを通してリクエストをプロキシするので、代わりにApacheを使用して問題を解決する方法に移りました。
私は最初にmod_proxyディレクティブのProxyPassReverseCookieDomainを試しましたが、tomcatがドメイン属性を設定していないため、Cookieの一部であるドメインがないとProxyPassReverseCookieDomainが動作しないため、JSESSIONID Cookieでは機能しません。
また、ProxyPassReverseCookiePathを使用してハックしたところで、ドメイン属性をクッキーに追加するためのパスを書き換えていましたが、これは本番サイトでは厄介なものでした。
私はついに、上記のDaveが述べたように、Apacheのmod_headersモジュールを使ってレスポンスヘッダーを書き直して動作させました。
は、私は、仮想ホスト定義内で次の行を追加しました:
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"
は、上記のすべての設定では、単一の行でなければなりません。 JSESSIONIDクッキーのドメイン属性を ".example.com"に置き換えます。 JSESSIONIDクッキーにドメイン属性が含まれていない場合、パターンは ".example.com"の値を持つパターンを追加します。ボーナスとして、このソリューションは弁の二重JSESSIONクッキーの問題に悩まされません。
パターンは、ヘッダーの他のCookieに影響を与えずに、Set-Cookieヘッダーの複数のCookieで機能するはずです。また、パターンの最初の部分のJSESSIONIDを、あなたが望むクッキー名に変更することによって、他のクッキーと連携するように変更する必要があります。
私はreg-exパワーユーザーではないので、パターンにできる最適化がいくつかあると確信していますが、これまでのところ私たちのために働いているようです。
パターンにバグがある場合は、この投稿を更新します。うまくいけば、これは、私がしたように、最後の数日間の欲求不満を経験することをやめることから、あなたのうちのいくつかを止めるでしょう。
+1ちょうど私が探していたもの!最後に、パッチが含まれていました。 – Kdeveloper