Java 接收到包含无效cookie的cookie标头。
我正在将我的服务器从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?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上的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可能包含敏感数据?