如何在tomcat 8中将Cookie处理器更改为LegacyCookieProcessor

2022-09-01 21:49:43

我的代码在tomcat 8版本8.0.33上工作,但在8.5.4上我得到:为此cookie指定了无效的域[.mydomain]。

我发现Rfc6265CookieProcessor是在tomcat 8最新版本中引入的。

它在官方文档上说,这可以在上下文中恢复到LegacyCookieProcessor.xml但我不知道如何。

请让我知道该怎么做。

谢谢


答案 1

您可以在上下文中尝试.xml

<CookieProcessor className="org.apache.tomcat.util.http.LegacyCookieProcessor" />

参考资料: https://tomcat.apache.org/tomcat-8.0-doc/config/cookie-processor.html


答案 2

案例1:您正在使用独立 Tomcat,并有权访问 tomcat 服务器中的更改文件

按@linzkl

案例2:您正在使用独立 Tomcat,但您无权更改 tomcat 服务器中的文件

在应用程序中的 src/main/webapp/META-INF 文件夹下创建一个名为 context 的新文件.xml并粘贴下面给出的内容

<?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 中部署应用程序时,放置在 META-INF 文件夹下的上下文.xml文件将覆盖 tomcat/conf/context 中给出的上下文.xml文件.xml

注意:如果您遵循此解决方案,则必须为每个应用程序执行此操作,因为 META-INF/context.xml 是特定于应用程序的

案例3:您正在使用嵌入式雄猫

为 WebServerFactory 创建自定义工具的新 Bean

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

推荐