Ответ 1
Вы можете попробовать в context.xml
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
ссылка: https://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html
Мой код работает над tomcat 8 version 8.0.33, но на 8.5.4 я получаю: Для этого файла cookie указан недопустимый домен [.mydomain].
Я обнаружил, что Rfc6265CookieProcessor представлен в последних версиях tomcat.
В официальном документе говорится, что это можно вернуть в LegacyCookieProcessor в context.xml, но я не знаю, как это сделать.
Пожалуйста, дайте мне знать, как это сделать.
Спасибо
Вы можете попробовать в context.xml
<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />
ссылка: https://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html
Включение LegacyCookieProcessor, который использовался в предыдущих версиях Tomcat, решило проблему в моем приложении. Как упомянул linzkl, это объясняется на веб-сайте Apache https://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html.
Причина в том, что новая версия Tomcat не понимает. (точка) перед именем домена используемого файла cookie.
Кроме того, обязательно проверьте этот пост, когда вы используете Internet Explorer. Видимо, это очень вероятно сломать.
Вы можете найти 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>
Проблема все еще с Tomcat9. Тот же процесс должен следовать для Tomcat 9, чтобы установить класс.
Добавьте класс в файл context.xml.
Если вы используете eclipse для запуска приложения, необходимо установить его в файле context.xml в папке сервера. Обратитесь к скриншоту ниже для получения дополнительной информации.
Надеюсь, это кому-нибудь поможет.
Случай 1: Вы используете автономный Tomcat и имеете доступ к файлам изменений на сервере Tomcat
Пожалуйста, следуйте ответ от @linzkl
Случай 2: вы используете автономный Tomcat, но у вас нет доступа к файлам изменений на сервере Tomcat
Создайте новый файл context.xml в папке src/main/webapp/META-INF в вашем приложении и вставьте содержимое, указанное ниже
<?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 файл context.xml, помещенный в папку META-INF, переопределит файл context.xml, указанный в tomcat/conf/context.xml.
Примечание. Если вы следуете этому решению, вы должны сделать это для каждого отдельного приложения, поскольку META-INF/context.xml зависит от конкретного приложения.
Случай 3: вы используете встроенный кот
Создайте новый компонент для 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());
}
});
}
};
}