收到包含无效 cookie 的 cookie 标头。
Posted
技术标签:
【中文标题】收到包含无效 cookie 的 cookie 标头。【英文标题】:A cookie header was received that contained an invalid cookie. 【发布时间】:2016-08-08 11:59:00 【问题描述】:我正在迁移我的服务器从 Tomcat-6 到 Tomcat-9。我的网站是为 HTTP/1.1 协议设计的。 server.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 将被忽略。注意:此错误的进一步发生将在 DEBUG 级别记录。
谁能告诉我这个错误的原因? 什么导致无效的cookie? 如果我使用不同的连接器可以避免这个错误吗?
【问题讨论】:
你解决过这个问题吗?我遇到了同样的错误 不,我还没有解决。我无法在任何地方得到答案,因此正在等待迁移。 我们在 Apache Tomcat 8.5 上遇到了问题 您的 cookie 被较新的 Tomcat 的 CookieProcessor 拒绝。可能的解决方案是: (1) 将您的 cookie 更改为兼容的。 (2) 配置您的 Tomcat 以使用旧的 LegacyCookieProcessor。 (3)。停止升级。 [参考文献:(a)***.com/a/38705982/1878585。 (b)tomcat.apache.org/migration-85.html#Cookies。 (c)tomcat.apache.org/tomcat-8.5-doc/config/…] 是否有办法禁用此日志记录,因为 cookie 可能包含敏感数据? 【参考方案1】:我发现部署在 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>
我认为org.apache.tomcat.util.http.Rfc6265CookieProcessor
会起作用,但没有,LegacyCookieProcessor
是必需的。
参考
https://tomcat.apache.org/tomcat-8.5-doc/config/cookie-processor.html#Legacy_Cookie_Processor_-_org.apache.tomcat.util.http.LegacyCookieProcessor
https://www.rfc-editor.org/rfc/rfc6265
LegacyCookieProcessor
实现了对 cookie 规范的严格解释。 由于与浏览器的各种互操作性问题并非都是严格的 默认情况下启用行为,并且可以使用其他选项 如果需要,进一步放宽此 cookie 处理器的行为。
【讨论】:
【参考方案2】:我在使用 2.2.x 以上版本的 Spring Boot 时遇到了这个问题
添加下面的bean后修复了
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> cookieProcessorCustomizer()
return tomcatServletWebServerFactory -> tomcatServletWebServerFactory.addContextCustomizers((TomcatContextCustomizer) context ->
context.setCookieProcessor(new LegacyCookieProcessor());
);
【讨论】:
【参考方案3】:Fwiw:我不知何故让我的 Chrome 浏览器进入了一个真正的 b0rken 状态,让它发送一个带有不匹配引号的格式错误的 cookie:"XSRF-TOKEN=93926112-aa12-440e-8e06-02b7fbce27d5;
仅从开发人员工具中清除 cookie 是不够的,但 Application
选项卡侧边栏中的 Clear storage
似乎已经完成了。
【讨论】:
以上是关于收到包含无效 cookie 的 cookie 标头。的主要内容,如果未能解决你的问题,请参考以下文章
org.apache.tomcat.util.http.parser.Cookie.logInvalidHeader 收到包含无效cookie的cookie头(含图文)
org.apache.tomcat.util.http.parser.Cookie.logInvalidHeader 收到包含无效cookie的cookie头(含图文)
org.apache.tomcat.util.http.parser.Cookie.logInvalidHeader 收到包含无效cookie的cookie头(含图文)
尝试从 gitlab 检索配置信息时获取“无效的 cookie 标头:“Set-Cookie:experimentation_subject_id ...”