【发布时间】:2014-10-17 23:45:35
【问题描述】:
我正在尝试设置和获取名称中包含方括号的 cookie。我可以在 PHP 中做到这一点,但在 Java 中读回 cookie 对我不起作用。这是在我的 JSP 中设置 cookie 的代码:
Cookie testCookie = new Cookie("test[cuid]", "test1");
Cookie testCookie2 = new Cookie("test", "test2");
testCookie.setMaxAge(60);
testCookie2.setMaxAge(60);
response.addCookie(testCookie);
response.addCookie(testCookie2);
这里是读取cookies的代码:
Cookie[] cookies = request.getCookies();
if(cookies != null){
out.println("# Cookies: " + cookies.length + "<br/>");
for (Cookie cookie : cookies){
out.print("Name: " + cookie.getName( ) + " - ");
out.print("Value: " + cookie.getValue( ) + "<br/>");
}
}
else {
out.println("No cookies found");
}
结果:
# Cookies: 2
Name: JSESSIONID - Value: DD299706C704FE80BC99C10EA2C6E9F9
Name: test - Value: test2
我可以在 Chrome 中看到两个 cookie 都设置了正确的名称和值。当我遍历 cookie 时,只会显示“测试”cookie; “test[cuid]” cookie 没有出现。我发现了一些其他人在 Tomcat 抛出带有特殊字符的 cookie 时遇到的问题,但我还没有找到解决方案。据我所知,RFC 2109 并没有明确禁止版本 1 cookie 名称中的括号。
版本:
- 铬 37.0.2062.124 m
- Apache Tomcat 8.0.9.0
- Java EE 8
- Spring 框架 4.0.1
编辑:我应该注意,这里的目的是检索由另一个 Web 服务设置的 cookie,因此任何涉及更改 cookie 名称的解决方案都不可行。
【问题讨论】: