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

lov*_*ing 11 cookies http

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

Gum*_*mbo 23

Netscape的原始cookie规范(请参阅此缓存版本)没有说明列出多个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头字段的语义,因为Set-Cookie以一种冲突的方式使用%x2C(",")字符有这样的折叠.

  • 我可以确认,当您尝试发送多个 cookie 时,Google Chrome 会进行非常不寻常的解析,因此这当然是不可取的。如何根据 RFC 2109 解析 cookie 让我困惑了很长一段时间,因为“,”字符作为 cookie 分隔符确实使它基本上无法解析。所以,简单来说,你只是不解析它。 (2认同)