web-dev-qa-db-ja.com

Tomcat 8でCookie ProcessorをLegacyCookieProcessorに変更する方法

私のコードはTomcat 8バージョン8.0.33で動作していますが、8.5.4で取得します:無効なドメイン[.mydomain]がこのCookieに指定されました。

Rfc6265CookieProcessorはTomcat 8の最新バージョンで導入されていることがわかりました。

公式ドキュメントでは、これをcontext.xmlのLegacyCookieProcessorに戻すことができると書かれていますが、方法はわかりません。

これを行う方法を教えてください。

ありがとう

17
Sachin Sharma

Context.xmlで試すことができます

<CookieProcessor className="org.Apache.Tomcat.util.http.LegacyCookieProcessor" />

参照: https://Tomcat.Apache.org/Tomcat-8.0-doc/config/cookie-processor.html

21
linzkl

Tomcatの以前のバージョンで使用されていたLegacyCookieProcessorを有効にすると、アプリケーションの問題が解決しました。 linzklが述べたように、これはApacheのWebサイト https://Tomcat.Apache.org/Tomcat-8.0-doc/config/cookie-processor.html で説明されています。

その理由は、Tomcatの新しいバージョンがを理解していないためです。 (ドット)使用されているCookieのドメイン名の前。

また、Internet Explorerを使用している場合は、必ず this post を確認してください。どうやら、壊れる可能性が非常に高いです。

Context.xmlは次のパスにあります。

Tomcat8/conf/context.xml

<?xml version="1.0" encoding="UTF-8”?>
<!-- The contents of this file will be loaded for each web application —>
<Context>
<!-- Default set of monitored resources. If one of these changes, the    -->
<!-- web application will be reloaded.                                   -->

<WatchedResource>WEB-INF/web.xml</WatchedResource>
<WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!-- <Manager pathname="" /> -->
<CookieProcessor className="org.Apache.Tomcat.util.http.LegacyCookieProcessor"/>
</Context>
9
smos

ケース1:使用しているのはスタンドアロンTomcatTomcatサーバーのファイルを変更するためのアクセス権

フォローしてください answer by @linzkl

ケース2:使用しているのはStandalone Tomcatbut youTomcatサーバーのファイルを変更するためのアクセス権がありません

アプリケーションのsrc/main/webapp/META-INFフォルダーの下にcontext.xmlという名前の新しいファイルを作成し、以下のコンテンツを貼り付けます

<?xml version="1.0" encoding="UTF-8"?> 
<Context>
  <WatchedResource>WEB-INF/web.xml</WatchedResource>
  <WatchedResource>WEB-INF/Tomcat-web.xml</WatchedResource>
  <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> 
  <CookieProcessor className="org.Apache.Tomcat.util.http.LegacyCookieProcessor" />
</Context>

スタンドアロンTomcatにアプリケーションをデプロイすると、META-INFフォルダーに配置したcontext.xmlファイルは、Tomcat/conf/context.xmlで指定されたcontext.xmlファイルを上書きします

:このソリューションを使用している場合、META-INF/context.xmlはアプリケーション固有です

ケース3:使用している埋め込みTomcat

WebServerFactoryCustomizerの新しいBeanを作成します

@Bean
WebServerFactoryCustomizer<TomcatServletWebServerFactory> cookieProcessorCustomizer() {
    return new WebServerFactoryCustomizer<TomcatServletWebServerFactory>() {

        @Override
        void customize(TomcatServletWebServerFactory tomcatServletWebServerFactory) {
            tomcatServletWebServerFactory.addContextCustomizers(new TomcatContextCustomizer() {
                @Override
                public void customize(Context context) {
                    context.setCookieProcessor(new LegacyCookieProcessor());
                }
            });
        }
    };
}
1
IamVickyAV

問題はまだTomcat9にあります。 Tomcat 9でクラスを設定するには、同じプロセスに従う必要があります。

Context.xmlファイルにクラスを追加します。

Eclipseを使用してアプリケーションを実行している場合は、サーバーフォルダーのcontext.xmlファイルで設定する必要があります。詳細については、以下のスクリーンショットを参照してください。

enter image description here

これが誰かを助けることを願っています。

1
Atul