JBoss 5.1.0(JSF / Seam)cookie用重音字符炸毁

时间:2010-06-01 19:22:52

标签: java servlets cookies jboss

我在JBoss 4.2.3中看不到这种行为。如果我尝试在HttpServletResponse上调用addCookie()并且我的cookie值中有重音字符(例如ç),我会得到以下异常: java.lang.IllegalArgumentException:控制cookie值中的字符,考虑BASE64编码你的值

有谁知道JBoss 5.1.0中的哪些变化可能导致这些问题?

1 个答案:

答案 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(),您可以在它们之间切换。