调用具有相同cookie名称的HttpServletResponse.addCookie()是否安全?

tbk*_*tbk 11 java servlets

正在打电话

HttpServletResponse.addCookie();
Run Code Online (Sandbox Code Playgroud)

(来自servlet-api-2.5)多次使用同名的cookie安全吗?

从某种意义上讲是安全的,有一种确定性的行为,例如后续的调用将被忽略(第一次获胜)或后续的调用将总是取代cookie或类似的东西?

例:

HttpServletResponse response = ...;
response.addCookie(new Cookie("foo", "bar"));
response.addCookie(new Cookie("foo", "42"));
Run Code Online (Sandbox Code Playgroud)

哪个值将被传输到浏览器并存储?

Jos*_*seK 7

更新的答案 - 正如@skaffman和@Stephen C的评论所示,这不是理想的做法.

RFC规范http://www.ietf.org/rfc/rfc2109.txt说明

NAME = VALUE属性值对必须在每个cookie中排在第一位. 如果属性在cookie中出现多次,则行为未定义.

在Tomcat服务器上,行为是发送到浏览器的实际标头:

Set-Cookie:foo = bar
Set-Cookie:foo = 42

这里foo被覆盖了.稍后阅读cookie会给你42.

  • 好吧,最好还是建议他不要这样做!它正在创造潜在的可移植性问题. (2认同)