2008/4/29

Tomcat 5.5.26 6.x的 cookie problem

最近原本程式在Tomcat 5.5.25可以運作正常的Cookie,最近在Tomcat 5.5.26上測試卻發現出了問題,原因在我們在Cookie的數值上,是以Base64編碼,然而base64的編碼結果會在最後面產生多個 = 字元,這個等號,在Tomcat 5.5.26取得cookie value時,被視為cookie規格中的等號。

舉例來說 cookie1=value= ,應該取到有個cookie1,數值為value=,但在Tomcat5.5.26上卻是,有個cookie1,數值為value。在Cookie V0的規格中,他告訴我們cookie裡面的資料必須要自己用URL style %XX 的方式編碼。

我懶得再用java.net.URLEncoder去轉換,直接replace所有的 = 為 $,取到cookie資料時再把 $ replace 成 = 就可以解決了。

至於 V1 的cookie,應該是不要用,相容性可能會有點問題。

New: Tomcat 5.5. 26 - cookie with colon in name is parsed incorrectly
Cookies behave differently between Tomcat 5.5.25 and Tomcat 5.5.26
Cookies are broken in 6.0.16?