2010-06-01 28 views
2

我在JBoss 4.2.3中看不到這種行爲。如果我嘗試在HttpServletResponse上調用addCookie(),並且我的cookie值中有重音字符(例如ç),則會得到此異常: java.lang.IllegalArgumentException:Cookie值中的控制字符,考慮BASE64編碼值JBoss 5.1.0(JSF/Seam)cookies帶有重音符號

有誰知道JBoss 5.1.0中的哪些更改可能會導致這些問題?

回答

2

顯然他們修復了一個bug,現在cookie名現在最終符合RFC2109

另請javax.servlet.http.Cookie API specification

的名稱必須符合RFC 2109這意味着它可以包含僅ASCII字母數字字符,不能包含逗號,分號或空格或以$字符開頭。 Cookie的名稱在創建後無法更改。

c與cedille ç不是ASCII character


更新:對不起,這個問題涉及的cookie 。然後這與this Tomcat bugfix(JBoss在引擎蓋下使用Tomcat)有關。這應該是通過設置cookie版本如下workaroundable:

cookie.setVersion(1); 

ç不是按照老的Netscape規範的cookie值的有效字符,但它是根據新的RFC2109規範。使用Cookie#setVersion()您可以在它們之間切換。

+0

該問題詢問cookie值,而不是cookie名稱。 – Photodeus 2010-06-02 02:37:22

+0

@Photodeus:我明白了。我更新了答案。感謝您的支持。 – BalusC 2010-06-02 02:59:49

+0

我已經解決了base64編碼某些cookie值(以及解碼時讀取)的問題。我已經嘗試將cookie版本設置爲1,但這並沒有解決問題。另外,從我讀過的,在IE7中設置cookie版本爲1。 有沒有人知道JBoss 5.1.0中有什麼不同,因爲在4.2.3中我能夠傳遞帶有重音的值而沒有問題。 – user283680 2010-06-02 17:14:29