我在JBoss 4.2.3中看不到這種行爲。如果我嘗試在HttpServletResponse上調用addCookie(),並且我的cookie值中有重音字符(例如ç),則會得到此異常: java.lang.IllegalArgumentException:Cookie值中的控制字符,考慮BASE64編碼值JBoss 5.1.0(JSF/Seam)cookies帶有重音符號
有誰知道JBoss 5.1.0中的哪些更改可能會導致這些問題?
我在JBoss 4.2.3中看不到這種行爲。如果我嘗試在HttpServletResponse上調用addCookie(),並且我的cookie值中有重音字符(例如ç),則會得到此異常: java.lang.IllegalArgumentException:Cookie值中的控制字符,考慮BASE64編碼值JBoss 5.1.0(JSF/Seam)cookies帶有重音符號
有誰知道JBoss 5.1.0中的哪些更改可能會導致這些問題?
顯然他們修復了一個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()
您可以在它們之間切換。
該問題詢問cookie值,而不是cookie名稱。 – Photodeus 2010-06-02 02:37:22
@Photodeus:我明白了。我更新了答案。感謝您的支持。 – BalusC 2010-06-02 02:59:49
我已經解決了base64編碼某些cookie值(以及解碼時讀取)的問題。我已經嘗試將cookie版本設置爲1,但這並沒有解決問題。另外,從我讀過的,在IE7中設置cookie版本爲1。 有沒有人知道JBoss 5.1.0中有什麼不同,因爲在4.2.3中我能夠傳遞帶有重音的值而沒有問題。 – user283680 2010-06-02 17:14:29