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
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
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>
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());
}
});
}
};
}
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.
J'espère que cela aide quelqu'un.