是否可以使用一个Set-Cookie设置多个cookie?

时间:2010-05-21 06:38:51

标签: http cookies

一个HTTP Set-Cookie指令只能容纳一个cookie,是不是?我的意思是,一对name=value对?

1 个答案:

答案 0 :(得分:19)

Netscape的原始cookie规范(参见this cached version)没有说明列出多个cookie声明的内容。

但是,由RFC 2109定义的 Set-Cookie 允许以逗号分隔的cookie声明列表:

  

非正式地,Set-Cookie响应头包含令牌Set-Cookie:,后跟逗号分隔的一个或多个cookie列表。每个cookie都以NAME = VALUE对开头,后跟零个或多个以冒号分隔的属性 - 值对。

同样适用于RFC 2965定义的 Set-Cookie2

  

非正式地,Set-Cookie2响应头包含令牌Set-Cookie2:,后跟一个或多个cookie的逗号分隔列表。每个cookie都以NAME = VALUE对开头,后跟零个或多个以冒号分隔的属性 - 值对。

但是由于大多数用户代理仍然遵循Netscape的原始规范,我宁愿建议只使用自己的 Set-Cookie 标头字段声明每个cookie。

这也是最新的RFC 6265反映的内容:

  

原始服务器不应该将多个Set-Cookie头字段折叠成      单个标题字段。折叠HTTP标头的常用机制      字段(即[RFC2616]中定义的)可能会改变语义      Set-Cookie标头字段,因为使用了%x2C(“,”)字符      通过Set-Cookie以与这种折叠相冲突的方式。