Java,Tomcat:cookie值中存在无效字符

5
我正在进行一个Spring-MVC项目,在其中尝试设置cookie。我使用的是Tomcat7,并且已经在context.xml中设置了cookie处理器为Rfc6265CookieProcessor。目前我遇到以下错误。
错误日志:
HTTP Status 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: An invalid character [44] was present in the Cookie value

type Exception report

message Request processing failed; nested exception is java.lang.IllegalArgumentException: An invalid character [44] was present in the Cookie value

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: An invalid character [44] was present in the Cookie value
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:979)
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

要设置的Cookie值:实际上没有空格,在IntelliJ中重新格式化以使它们在一个段落中时得到了它们。
  s.d774b7c6eabba92fce3edbed8a9b003b,
s.bdf5f951e4ab858aac87fb182439f57f,
s.e77bd0cd86b4af86c4a550ec11d71d4c,
                        s.431334e112350c9d545f7a44cbcc530d,
                        s.6e6057e5483b538cf9c6daf2934fd825,
                        s.ea2438094c8631123fab3bf3efb7ec17,
                        s.e17b1d9dd1b9702ca8c9e95d30906dd5, s .3f 3 c8f3fc19597025ef87dafc0fb277a, s .5531
                b742d6e12717f4071818b5861bd2, s .420811998d
                b14d0a68dd9e3d3c04849f, s.d8ed1aa3b0a2e513d449a96182898160, s.f3b5784d6e777032c6b7576e7d824af0, s .69
                bc19557e43fcfa83816f427b60a09d, s .5677087e bc57003436c55f49fceff5cb, s .5f
                a872b3e84fd69618534940034e1adb, s.fe4184c9b925ddf04def79c0c55392ca, s .74e4438d 05f 267
                c48297a0c66a7dbeba, s .95e c071a356cf1998d809267006725db, s .9 b72a01cfda4509833c1f0c7bf2afdac, s .5240f
                10897d 2f 96f 49d 0328 a2521519c, s .518 cd1d749fbba6540424874d64c5443

我不会读那个。在所有这些内容中,字符0x44在哪里?基本上,你不能将该字符放入cookie值中:你需要以某种方式对其进行编码。因此,要么找出为什么0x44最终出现在你的cookie值中并修复它(因为这是一个错误?),要么在将其放入cookie之前使用例如base64对二进制数据进行编码。 - Christopher Schultz
2个回答

4

0
对我来说解决方案是更改Tomcat的版本,我之前使用的是8.5版本,但在cookie值中出现了字符错误,我尝试升级到Tomcat 9,但问题仍然存在,最终通过Tomcat 7解决了问题。最合理的选择是替换cookie值中的逗号,但如果您想快速解决本地问题并继续工作,可以考虑切换Tomcat版本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接