收到的Cookie标头包含无效的Cookie。

时间:2016-04-16 14:20:19

标签: java tomcat networking cookies web

将我的服务器从 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的原因是什么? 如果我使用不同的连接器,是否可以避免此错误?

3 个答案:

答案 0 :(得分:2)

我发现在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配置(LegacyCookieProcessor)中的cookie处理器(conf/context.xml

示例,

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://tools.ietf.org/html/rfc6265

  

LegacyCookieProcessor实现了对cookie规范的严格解释。   由于浏览器的各种互操作性问题并非全部严格   默认情况下启用行为,并且可以使用其他选项   如果需要,进一步放松这个cookie处理器的行为。

答案 1 :(得分:2)

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

在添加以下bean之后得到修复

private Mock<ISearchResults> _mockSearchResults;

答案 2 :(得分:0)

Fwiw:我以某种方式使我的Chrome浏览器进入了崩溃状态,使其发送格式不正确的Cookie,并带有不匹配的引号:"XSRF-TOKEN=93926112-aa12-440e-8e06-02b7fbce27d5;

仅从开发人员工具中清除cookie是不够的,但是从Clear storage标签的侧边栏中的Application似乎已经完成了。