Java 为什么HttpServletRequest#getCookies对具有冒号值的cookie返回null?

Java 为什么HttpServletRequest#getCookies对具有冒号值的cookie返回null?,java,servlets,cookies,jboss,Java,Servlets,Cookies,Jboss,当发送带有值Cookie:c=:的头时,JBoss 7.2.0.Final的servlet实现会为以下代码返回null: request.getCookies(); // null 但当我读取标题时,它会正确返回值: request.getHeader( "Cookie" ); // c=: 根据,冒号应被视为有效的cookie值。显示允许范围内的正确字符(请参见第三行中的冒号) 现在,有人能告诉我为什么JBoss 7.2.0.final的javax.servlet.http.HttpSer

当发送带有值
Cookie:c=:
的头时,JBoss 7.2.0.Final的servlet实现会为以下代码返回
null

request.getCookies(); // null
但当我读取标题时,它会正确返回值:

request.getHeader( "Cookie" ); // c=:
根据,冒号应被视为有效的cookie值。显示允许范围内的正确字符(请参见第三行中的冒号)


现在,有人能告诉我为什么JBoss 7.2.0.final的
javax.servlet.http.HttpServletRequest#getCookies()
实现无法读取值中使用
创建的cookie吗?

如果是这种情况,它可以被认为是JBoss中的一个bug,你应该提交一份bug报告。在你得出这是JBoss bug的结论之前,你应该先看一下原始的标题行,看看是否有1)多余的空格字符,2)同形符或3)其他意外的东西。我可以确保没有额外的空格/同形符或其他意外的东西。我有一个集成测试,检查编码例程中所有允许和不允许的cookie字符。当我将代码更改为从“Cookie”头读取时,字符被正确处理。查看正在开发的项目:以下测试失败:。许多其他具有不同字符的测试因相同的症状而失败,但在通过直接读取标题解决了冒号问题后,它解决了大多数问题。