web-dev-qa-db-fra.com

Comment changer le processeur de cookies en LegacyCookieProcessor dans Tomcat 8

Mon code fonctionne sur Tomcat 8 version 8.0.33 mais sur 8.5.4 j'obtiens: Un domaine non valide [.mydomain] a été spécifié pour ce cookie.

J'ai constaté que Rfc6265CookieProcessor est introduit dans les dernières versions de Tomcat 8.

Il est dit sur le document officiel que cela peut être restauré en LegacyCookieProcessor dans context.xml mais je ne sais pas comment.

S'il vous plait, faites moi savoir comment faire ça.

Merci

17
Sachin Sharma

Vous pouvez essayer dans context.xml

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

référence: https://Tomcat.Apache.org/Tomcat-8.0-doc/config/cookie-processor.html

21
linzkl

L'activation du LegacyCookieProcessor utilisé dans les versions précédentes de Tomcat a résolu le problème dans mon application. Comme l'a mentionné linzkl, cela est expliqué sur le site Web d'Apache https://Tomcat.Apache.org/Tomcat-8.0-doc/config/cookie-processor.html .

La raison en est que la nouvelle version de Tomcat ne comprend pas le. (point) devant le nom de domaine du cookie utilisé.

Assurez-vous également de vérifier ce message lorsque vous utilisez Internet Explorer. Apparemment, il est très probable qu'il se casse.

Vous pouvez trouver context.xml dans le chemin suivant.

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

Cas 1: Vous utilisez Tomcat autonome & avoir accès pour modifier les fichiers sur le serveur Tomcat

Veuillez suivre réponse par @linzkl

Cas 2: Vous utilisez Tomcat autonome mais vous n'ont pas accès pour modifier les fichiers sur le serveur Tomcat

Créez un nouveau fichier appelé context.xml sous le dossier src/main/webapp/META-INF dans votre application et collez le contenu indiqué ci-dessous

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

Lorsque vous déployez votre application dans Tomcat autonome, le fichier context.xml que vous avez placé dans le dossier META-INF remplacera le fichier context.xml donné dans Tomcat/conf/context.xml

Remarque : Si vous suivez cette solution, vous devez le faire pour chaque application car META-INF/context.xml est spécifique à l'application

Cas 3: Vous utilisez Tomcat intégré

Créer un nouveau bean pour 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());
                }
            });
        }
    };
}
1
IamVickyAV

Le problème est toujours avec Tomcat9. Le même processus doit suivre pour Tomcat 9 pour définir la classe.

Ajoutez la classe dans le fichier context.xml.

Si vous utilisez Eclipse pour exécuter l'application, vous devez définir le fichier context.xml dans le dossier du serveur. Reportez-vous à la capture d'écran ci-dessous pour plus de référence.

enter image description here

J'espère que cela aide quelqu'un.

1
Atul