ウェブサイトを複数のサブドメインに分割しており、既存の Cookie はすべて単一のドメインに関連付けられています。Apache を使用して Cookie を編集してドメインをリセットしようとしていますが、正しい方法で問題が発生しています。
問題は、Set-Cookie ヘッダーに複数のタプルがさまざまな順序と大文字と小文字で含まれており、ドメインが含まれていない場合があることです。
多くの柔軟性があるため、mod_rewrite を使用して調査しましたが、これは個々の応答 Cookie ではなく、すべての要求 Cookie %{HTTP_COOKIE} で機能するようです。応答内のすべての Cookie を変更する必要があります。
私は mod_header を試して解決策を見つけましたが、タプルが正しい順序で存在することに制限されているのではないかと心配しています。
Header edit Set-Cookie "^([^;]*;).*((?i)(Path|Expires)=.*)$" "$1 Domain=.domain.com; $2"
これも、HttpOnly と Secure が存在する場合、それらが最後にあることを前提としています。バックエンドでは設定せず、後で Apache が追加するため、これは安全な方法です。
バックエンドは、いくつかの Java アプリケーションです。それらを変更することは長期的なアプローチかもしれませんが、私は現在、Java レイヤーの前にある Apache レイヤーに限定しています。
以下を試しましたが、ドメインが存在する必要があります。
Header edit Set-Cookie "^(.*)((?i)(Domain)=[^,;]*[,;]?)(.*)$" "$1 Domain=.domain.com; $4"
ドメイン グループをオプションにしようとしましたが、ドメイン タプルが存在する場合でも、最初のグループが貪欲になります。ドメインタプルが存在しない場合、グループが貪欲になるかどうかは気にしません。レイジーとしてコーディングしても役に立ちませんでした。
Header edit Set-Cookie "^(.*?)((?i)(Domain)=[^,;]*[,;]?)?(.*)$" "$1 Domain=.domain.com; $4"
助言がありますか?私の正規表現スキルは非常に試行錯誤していますが、私の直感はこれが実行可能であることを教えてくれます。
ありがとう、ウェス。
ボーナス質問:
開発から運用に移行するにつれてドメインが変化するため、複数のドメインをサポートする必要があります。ヘッダー変数を設定または追加するときは環境変数を使用できますが、編集するときは使用できません。助言がありますか。
これは、値の環境変数で機能します。
Header append Access-Control-Allow-Origin "%{HTTP_ORIGIN}e" env=HTTP_ORIGIN
これは、置換の環境変数ではありません。
Header edit Set-Cookie "([^;]*;).*(Path=.*)" "$1 Domain=.%{cookieDomain}e; $2"