Как изменить процессор Cookie на LegacyCookieProcessor в tomcat 8

Мой код работает над tomcat 8 version 8.0.33, но на 8.5.4 я получаю: Для этого файла cookie указан недопустимый домен [.mydomain].

Я обнаружил, что Rfc6265CookieProcessor представлен в последних версиях tomcat.

В официальном документе говорится, что это можно вернуть в LegacyCookieProcessor в context.xml, но я не знаю, как это сделать.

Пожалуйста, дайте мне знать, как это сделать.

Спасибо

Ответ 2

Включение 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>

Ответ 3

Проблема все еще с Tomcat9. Тот же процесс должен следовать для Tomcat 9, чтобы установить класс.

Добавьте класс в файл context.xml.

Если вы используете eclipse для запуска приложения, необходимо установить его в файле context.xml в папке сервера. Обратитесь к скриншоту ниже для получения дополнительной информации.

enter image description here

Надеюсь, это кому-нибудь поможет.

Ответ 4

Случай 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());
                }
            });
        }
    };
}