我在JBoss 4.2.3中看不到这种行为。如果我尝试在HttpServletResponse上调用addCookie()并且我的cookie值中有重音字符(例如ç),我会得到以下异常: java.lang.IllegalArgumentException:控制cookie值中的字符,考虑BASE64编码你的值
有谁知道JBoss 5.1.0中的哪些变化可能导致这些问题?
答案 0 :(得分:2)
显然他们修复了一个错误,以便cookie名称现在最终符合RFC2109。
另见javax.servlet.http.Cookie
API specification:
该名称必须符合RFC 2109.这意味着它可以包含仅ASCII字母数字字符,并且不能包含逗号,分号或空格或以$字符开头。创建后无法更改cookie的名称。
ced with ç
不是ASCII character。
更新:抱歉,问题与Cookie 值有关。这与this Tomcat bugfix有关(JBoss使用Tomcat)。通过如下设置cookie版本,这应该是可以解决的:
cookie.setVersion(1);
根据旧的Netscape规范,ç
不是cookie值的有效字符,但它符合较新的RFC2109规范。使用Cookie#setVersion()
,您可以在它们之间切换。