代码之家  ›  专栏  ›  技术社区  ›  tbk

使用相同的cookie名称调用HttpServletResponse.addCookie()安全吗?

  •  10
  • tbk  · 技术社区  · 16 年前

    正在呼叫

    HttpServletResponse.addCookie();
    

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

    安全的意思是存在确定性行为,例如,后续调用将被忽略(第一个wins),或者后续调用将始终替换cookie或类似的东西?

    例子:

    HttpServletResponse response = ...;
    response.addCookie(new Cookie("foo", "bar"));
    response.addCookie(new Cookie("foo", "42"));
    

    浏览器将传输和存储哪个值?

    2 回复  |  直到 16 年前
        1
  •  8
  •   JoseK    16 年前

    更新的答案-来自@skaffman和@Stephen C的评论表明这不是理想的做法。

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

    NAME=VALUE属性值对 如果出现属性 饼干里不止一次 行为未定义。

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

    设置Cookie:foo=bar
    设置Cookie:foo=42

        2
  •  2
  •   johnkaplantech    12 年前

    附加注释-请注意,在同一响应中对具有相同名称的Cookie设置不同的子域会改变行为。我刚刚在mac上测试了在最新版本的Java1.6/firefox/safari/chrome上保存同名但不同子域的cookie,结果和预期一样,保存了两个cookie。我知道这个行为并没有得到规范的保证,但我只是说,了解它可能会有所帮助。