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