私は前日にapachetomcatのドキュメントを読んだことがありますが、についてはとても混乱していemptySessionPath
ます。私の知る限り、trueに設定されている場合、emptySessionPath
はWebアプリケーションのルートフォルダーに保存されます。用語の正しい定義と、 emptySessionPath
それがtrueとfalseに設定されている場合はどうなりますか?
案内してください。よろしくお願いします。
このemptySessionPath
フィールドには、すべてのCookieをルートURLパスに保存する必要があるか/
(if emptySessionPath=true
)、保存しないか(それ以外の場合)が示されます。
これは、Apacheのコネクタによって使用されます。詳細はこちらをご覧ください(これは、Connnectorオブジェクトの一部であるAJPコネクタ用です)。
これが基本的に意味することは次のとおりです。
emptySessionPath
tomcatでが有効になっている場合、JSESSIONID
Cookieはルートの「/」パスに書き込まれます。これは、使用しているWebアプリが同じCookieを使用することを意味します。各WebアプリはCookieの値を書き換えて、そのWebアプリのセッションIDを保持しますが、これらはすべて異なります。これを有効にして、異なるWebアプリケーションのサーブレットを使用すると、同じユーザーから異なるサーブレットへのリクエストによってCookieが上書きされるため、サーブレットが再度対話されると、新しいセッションが作成され、すでに設定されているセッションが失われます。 。
が設定されていない場合
emptySessionPath
、ブラウザには複数のCookieがあり(ルートには1つありません)、異なるWebアプリが上記のように互いのCookieを書き換えることはありません。
JSESSIONID
WebアプリケーションのIDセッションです。ここで完全な説明を参照してください。
更新:使用法に関するこの情報はやや古くなっています。最近のTomcatのセッションパスを設定する方法の最新情報については、こちらを参照してください。
emptySessionPathがtrueに設定されている場合、JSESSIONID cookieからコンテキストパスが削除されます。cookieパスが/に設定されます。この属性は、クロスアプリケーションの自動化メカニズムに使用できます。
ご存知かもしれませんが、セッションはCookieによって維持されることがよくあります。Cookieには、特定のリクエストに対してブラウザから返されるかどうかを決定する2つの値、cookieDomainとcookiePathがあります。cookiePathはリクエストのそれと一致する必要があります。
リクエストがあります
/some/request/for/this.html
CookieはCookieパスで返されます:
/
/some
/some/request
ただし、Cookieパスの場合はそうではありません。
/other
仕様により、セッションは異なるWebアプリケーション間で共有されないため、Webアプリケーションをでfoo.war
デプロイしている場合/foo
、セッションCookieパスはデフォルトでに設定されます/foo
。
Connector.emptySessionPathはConnectorの保護された変数のようです。コードを読んでいませんが、Tomcatのシングルサインオンまたは共有セッションと関係があると思います。この場合、1つのコンテキストにログインし、すべてが認証されます。この場合、Cookieパス/
はセッションCookie用である必要があります。
念のため、web_appバージョン3.0の場合、Cookieの構成は標準化されているため、webapp3.0でのAJPのemptySessionPathと同等です。
<session-config>
<cookie-config>
<path> / </ path>
<secure> true </ secure>
</ cookie-config>
</ session-config>