正在调用
HttpServletResponse.addCookie();
(来自servlet-api-2.5)多次使用同名的cookie安全吗?
在某种意义上是安全的,例如存在确定性行为,例如:后续调用将被忽略(第一次获胜)或后续调用将始终替换cookie或类似的东西?
示例:
HttpServletResponse response = ...;
response.addCookie(new Cookie("foo", "bar"));
response.addCookie(new Cookie("foo", "42"));
哪个值将传输到浏览器并由浏览器存储?
答案 0 :(得分:6)
更新的答案 - 正如@skaffman和@Stephen C的评论所示,这不是理想的做法。
http://www.ietf.org/rfc/rfc2109.txt州的RFC规范
NAME = VALUE属性值对 必须在每个cookie中排在第一位。 如果出现属性 不止一次在饼干里, 行为未定义。
在Tomcat服务器上,行为是发送到浏览器的实际标头:
Set-Cookie:foo = bar
Set-Cookie:foo = 42
这里foo被覆盖了。稍后阅读cookie会给你42。
答案 1 :(得分:2)
附加注释 - 请注意,在同一响应中使用相同名称的Cookie设置不同的子域会更改行为。我刚刚在我的mac上测试了在最新版本的java 1.6 / firefox / safari / chrome上保存了具有相同名称但不同子域的cookie,并且它按预期运行,节省了两个cookie。我理解规范不保证这种行为,但只是说'了解它可能会有所帮助。