Java >> Java tutorial >  >> Tag >> Tomcat

Sådan ændres Cookie Processor til LegacyCookieProcessor i Tomcat 8

Du kan prøve i context.xml

<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />

reference:https://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html


Aktivering af LegacyCookieProcessor som er brugt i tidligere versioner af Tomcat har løst problemet i min applikation. Som linzkl nævnte er dette forklaret på Apaches hjemmeside https://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html.

Årsagen er, at den nye version af Tomcat ikke forstår . (prik) foran domænenavnet på den cookie, der bruges.

Sørg også for at tjekke dette indlæg, når du bruger Internet Explorer. Det er tilsyneladende meget sandsynligt, at den går i stykker.

Du kan finde context.xml i følgende sti.

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>

Case 1: Du bruger Standalone Tomcat &har adgang for at ændre filer i tomcat-serveren

Følg venligst svaret fra @linzkl

Case 2: Du bruger Standalone Tomcat men du har ikke adgang for at ændre filer i tomcat-serveren

Opret en ny fil kaldet context.xml under src/main/webapp/META-INF mappe i din ansøgning og indsæt indholdet nedenfor

<?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>

Når du implementerer din applikation i Standalone Tomcat, vil context.xml-filen, som du placerede under META-INF-mappen, tilsidesætte filen context.xml givet i tomcat/conf/context.xml

Bemærk :Hvis du følger denne løsning, skal du gøre det for hver enkelt applikation, fordi META-INF/context.xml er applikationsspecifik

Case 3: Du bruger Embedded Tomcat

Opret en ny bean til WebServerFactoryCustomizer

@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());
                }
            });
        }
    };
}

Java tag