0

私の観点からはIISで簡単に実行できますが、私はTomcatに完全に慣れていないため、Cookieのコンテンツに静的な値を設定する方法がわかりません. はい、セキュリティへの影響を読みましたが、最終的には SSL 経由でアクセスするので心配ありません。さらに、値を変更しないことに関する Servlet 3.0 仕様を読みましたが、それを受け入れます。

IIS では、WebServerSID の任意の設定と値 1001 を使用して、Set-Cookie という名前の HTTP ヘッダーを設定するだけです。

次に、この実サーバーのグループを含むロード バランサー VIP で、値 WebServerSID を VIP レベルで設定し、最初の Web サーバーの Cookie 値を 1001 に設定し、残りのマシンの Cookie 値をサーバー 2 の 1002、サーバー 3 の 1003 に設定します。

これにより、クライアントがブラウザを閉じるまで、Cookie を介してセッション アフィニティが実現されます。

Tomcat 7.0.22 でこれを行うにはどうすればよいですか?

Cookie とその設定方法に関して、Tomcat 6.x と 7.x の間で多くの構成変更が行われていることがわかります。先週の広範な調査の後、次のことを試しました。

web.xml 内: (これにより、Tomcat 7.x での URL 書き換えが無効になります) <tracking-mode>COOKIE</tracking-mode>デフォルトの session 要素の下

context.xml: (cookies はデフォルトで true ですが、動作させることができないので明示的でした)

cookies=true
sessionCookiePath=/
sessionCookieName=WebServerSID
sessionCookieName=1001

Tomcat 6.x の同等のコマンドが 1 にマージされたように見えるため、sessionCookieName の context.xml に 2 つのエントリがあります。http://tomcat.apache.org/migration-7.html#Tomcat_7.0 を参照してください。 x_configuration_file_differences

エキス:

org.apache.catalina.SESSION_COOKIE_NAME システム プロパティ: これは削除されました。グローバル context.xml (CATALINA_BASE/conf/context.xml 内) の sessionCookieName 属性を構成することによって、同等の効果を得ることができます。org.apache.catalina.SESSION_PARAMETER_NAME システム プロパティ: これは削除されました。グローバル context.xml (CATALINA_BASE/conf/context.xml 内) の sessionCookieName 属性を構成することによって、同等の効果を得ることができます。

これが正しくない場合は、必要な構文を理解していないだけであり、単純に白黒で説明している場所を見つけることができません。

Tomcat 6.x では、次のように設定で Java オプションを使用していました。

-Dorg.apache.catalina.SESSION_COOKIE_NAME=WebServerSID
-Dorg.apache.catalina.SESSION_PARAMETER_NAME=1001

私が使用しているアプリケーションには、これらの値が他に設定されていないため、アプリケーションではありません。

これらの設定はすべて、Catalina ベースの context/web/server.xml ファイルにあります。

一日の終わりに、Set-Cookies の下の応答ヘッダーで確認する必要があるのは (Fiddler を使用して見られるように) です。

WebServerSID=1001

いいえ

JSESSIONID=as8sd9787ksjds9d8sdjks89s898

前もって感謝します

よろしく

4

1 に答える 1

0

構成だけでできる最善の方法は、エンジンの jvmRoute 属性を設定して、セッション ID の末尾に定数値を追加することです。ほとんどのロードバランサーはそれを処理できます。次のようになります。

JSESSIONID=as8sd9787ksjds9d8sdjks89s898.route1

それが十分ではなく、必要なWebServerSID=1001場合は、ServletFilter を作成し、すべての応答にヘッダーを追加するように構成する必要があります。

于 2012-05-16T18:54:39.203 に答える