设置传入的httpServletRequest的cookie版本

时间:2012-08-27 12:17:39

标签: java java-ee cookies httpcookie

我有一个客户端向我发送带有逗号分隔值的版本1 cookie。这应该在版本1的cookie中正常,但在版本0中不允许。

所以这就是cookie

test.cookie=1,1

现在,当我阅读Cookie [] cookies = request.getCookies []时,我返回了2个像这样的cookie:

test.cookie=1
1=

因此,它将cookie的值视为下一个cookie的分隔符,您可以在cookie的版本0中看到它。 所以问题是我可以在读取来自它的cookie之前设置传入的HttpServletRequest的cookie版本。

我知道有一个Cookie.setVersion(int)方法,但这对我没有用,因为我没有设置容器的cookie。 (实际上可能是在容器中设置cookie版本的线索,我现在就去看看)

修改 我解决这个问题的方法是只读取标题,然后读取Cookie标题的值,该标题以分号分隔列表的形式出现,然后自己解析每个cookie名称值对,因此cookie的值中的逗号为然后保存正确,我只得到一个cookie。很高兴知道是否有办法用HttpServleRequest.getCookies()做到这一点。

3 个答案:

答案 0 :(得分:1)

根据RFC2965RFC2109,字符在值字段中使用时需要引号,因此","。这将有助于您暗示逗号是用于分隔两个cookie还是具有值的含义。根据我对RFC6265的理解,,根本不被允许。

答案 1 :(得分:0)

如果您无法控制来自客户端的cookie,那么您只能选择。
将cookie作为两部分阅读并将它们自己组合成一个cookie然后再使用它。 使用以下内容:

new_cookie.setValue(cookies[0].getValue()+cookies[1].getValue());

使用new_cookie

进行进一步操作

答案 2 :(得分:0)

在cookie中编码值为我解决了这个问题。