Java 接收到包含无效cookie的cookie标头。

Java 接收到包含无效cookie的cookie标头。,java,tomcat,networking,cookies,web,Java,Tomcat,Networking,Cookies,Web,我正在将我的服务器从Tomcat-6迁移到Tomcat-9。我的网站是为HTTP/1.1协议设计的。xml文件包含org.apache.coyote.http11.Http11NioProtocol的连接器协议。服务器正常启动,不会产生任何错误。但是,当我尝试使用localhost访问我的网站时,出现以下错误:- INFO[https-nio-8445-exec-3]org.apache.tomcat.util.http.parser.Cookie.logInvalidHeader收到Cooki

我正在将我的服务器从Tomcat-6迁移到Tomcat-9。我的网站是为HTTP/1.1协议设计的。xml文件包含org.apache.coyote.http11.Http11NioProtocol的连接器协议。服务器正常启动,不会产生任何错误。但是,当我尝试使用localhost访问我的网站时,出现以下错误:-

INFO[https-nio-8445-exec-3]org.apache.tomcat.util.http.parser.Cookie.logInvalidHeader收到Cookie头[2,3,4,5,6,7,8,9,10,11,12,21,22,23];userId=53136]包含无效cookie。该cookie将被忽略。注意:此错误的进一步出现将在调试级别记录

谁能告诉我这个错误的原因吗? 什么导致无效cookie?
如果我使用不同的连接器,这个错误可以避免吗?

我发现部署在tomcat上的API能够在我发送cURL请求时抓取cookie,尽管有tomcat警告

curl -XPOST -H "Content-Type: application/json"  --cookie "userId=64ad960c-bb7e-48dd-8191-4f31539bc2c2,accessToken=64ad960c-bb7e-48dd-8191-4f31539bc2c2" -d '{"message":"play porcupine tree"}' http://localhost:9090/nlu/convo
但是要删除警告,必须在tomcat配置(
conf/context.xml
)中更新cookie处理器(
LegacyCookieProcessor

例如

cat /usr/local/apache-tomcat-8.5.12/conf/context.xml 
<?xml version="1.0" encoding="UTF-8"?>
<!-- The contents of this file will be loaded for each web application -->
<Context>

    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource>

    <!--
    <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor" />
    -->

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

</Context>
cat/usr/local/apache-tomcat-8.5.12/conf/context.xml
WEB-INF/WEB.xml
${catalina.base}/conf/web.xml
我以为
org.apache.tomcat.util.http.Rfc6265CookieProcessor
可以工作,但没有,需要
LegacyCookieProcessor

参考文献

LegacyCookieProcessor
实现了对cookie规范的严格解释。 由于浏览器的各种互操作性问题,并不都严格 默认情况下会启用行为,并提供其他选项 如果需要,进一步放宽此cookie处理器的行为


Fwiw:我不知怎的让我的Chrome浏览器进入了一个非常糟糕的状态,让它发送一个带有不匹配引号的错误cookie:
“XSRF-TOKEN=93926112-aa12-440e-8e06-02b7fbce27d5;


仅仅从开发人员工具中清除cookie是不够的,但是
应用程序
选项卡侧栏中的
清除存储
似乎已经做到了这一点。

我在2.2.x以上版本的spring boot中遇到了这个问题

在添加了下面的bean之后,它得到了修复

public WebServerFactoryCustomizer<TomcatServletWebServerFactory> cookieProcessorCustomizer() {
    return tomcatServletWebServerFactory -> tomcatServletWebServerFactory.addContextCustomizers((TomcatContextCustomizer) context -> {
      context.setCookieProcessor(new LegacyCookieProcessor());
    });
  }
publicWebServerFactoryCustomizer cookieProcessorCustomizer(){
返回tomcatServletWebServerFactory->tomcatServletWebServerFactory.addContextCustomizers((TomcatContextCustomizer)上下文->{
setCookieProcessor(新的LegacyCookieProcessor());
});
}

你解决过这个问题吗?我遇到了同样的错误否,我还没有解决它。我在任何地方都找不到它的答案,因此迁移正在等待。我们在Apache Tomcat 8.5上遇到了这个问题。你的cookie被更新的Tomcat cookie处理器拒绝。可能的解决方案是:(1)将你的cookie更改为兼容的cookie。(2)将Tomcat配置为使用旧的LegacyCookie处理器。(3)。停止升级。[参考文献:(a)。(b)。(c)]有没有办法禁用此日志记录,因为cookie可能包含敏感数据?