20

分号;Cookie:字符串还是其他字符串?

4

2 回答 2

36

检查 HTTP 请求中的 cookie

Cookie:头具有以下语法:

Cookie: <Name> = <Value> { ; <Name> = <Value> }

因此,单个 cookie用分号和空格分隔

在 HTTP 响应中设置 cookie

另一方面,在响应中设置 cookie 时,每个Set-Cookie:标头都有一个 cookie:

Set-Cookie: <Name> = <Value> [ ; expires = <Date>] [ ; path = <Path> ] [ ; domain = <Domain> ] // etc…

要设置多个 cookie,Set-Cookie标头会在 HTTP 响应中重复。


笔记:

  • 此处查看带有示例的教程,并查看RFC 6265 HTTP 状态管理机制以获取显示语法完整细节的规范性参考。
  • 现在已经过时的RFC 2965定义了一对备用的标头Cookie2Set-Cookie2并且被放弃了。
  • HTTP 状态管理机制RFC 2109RFC 2965 )的过时版本提供了一种将多个Set-Cookie(或Set-Cookie2)标头合并为一个的方法。但是,最新的RFC 6265规范不推荐这种折叠方式。
于 2011-01-30T15:10:39.220 回答
1

答案是逗号,

RFC 2109的第 4.2.2 节中有这个Set-Cookie标头规范

   set-cookie      =       "Set-Cookie:" cookies
   cookies         =       1#cookie

使用以下语句非正式地,Set-Cookie 响应标头包含令牌 Set-Cookie:,后跟一个或多个 cookie 的逗号分隔列表。(上述符号中的正式含义#RFC 733的 A 节中定义。 NOTATIONAL CONVENTIONS,第 5 点

定义了一个构造“#”,类似于“*”,如下所示:

              <l>#<m>element

表示至少<l>和最多<m>元素,每个元素由一个或多个逗号 (",") 分隔。

是的,RFC 2109 已被 RFC 2965 淘汰,而 RFC 2965 又被RFC 6265淘汰。
不,在这种情况下它不会改变任何东西

  • 大多数现有的 HTTP 服务器和客户端都支持 RFC 2109
  • RFC 6265禁止Set-Cookie折叠
于 2011-11-24T22:19:17.043 回答