我有一个客户端向我发送带有逗号分隔值的版本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()做到这一点。
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您无法控制来自客户端的cookie,那么您只能选择。
将cookie作为两部分阅读并将它们自己组合成一个cookie然后再使用它。
使用以下内容:
new_cookie.setValue(cookies[0].getValue()+cookies[1].getValue());
使用new_cookie
答案 2 :(得分:0)
在cookie中编码值为我解决了这个问题。