【发布时间】:2011-01-30 15:02:20
【问题描述】:
分号;、Cookie: 字符串还是其他字符串?
【问题讨论】:
标签: http http-headers rfc httpcookie
分号;、Cookie: 字符串还是其他字符串?
【问题讨论】:
标签: http http-headers rfc httpcookie
Cookie: 标头具有以下语法:
Cookie: <Name> = <Value> { ; <Name> = <Value> }
因此单独的 cookie 是分开的 with the semicolon and a space。
另一方面,在响应中设置 cookie 时,每个 Set-Cookie: 标头都有一个 cookie:
Set-Cookie: <Name> = <Value> [ ; expires = <Date>] [ ; path = <Path> ] [ ; domain = <Domain> ] // etc…
要设置多个 cookie,Set-Cookie 标头会在 HTTP 响应中重复。
注意事项:
【讨论】:
Set-Cookie: 标头都有一个 cookie: 不正确。 在部分RFC 2109 的 4.2.1 读取 源服务器可能在响应中包含多个 Set-Cookie 标头。请注意,中间网关可以将多个此类标头折叠成单个标头。在同一 RFC 的第 4.2.2 节中,非正式地,Set-Cookie 响应标头包含令牌 Set-Cookie:,然后由一个或多个 cookie 的逗号分隔列表。
Set-Cookie 折叠。 2109 和 2965 都不支持在提供的 ABNF 语法中折叠。感谢您指出这种歧义。我将在我的回复中修复 RFC 参考。
Set-Cookie标题(折叠) - 看我的答案。
Cookie: 标头语法中的分号分隔每个 <Name>=<Value> 对而不是每个 cookie,因为每个 cookie 可以有任意数量的此类对。
答案是逗号,。
在RFC 2109 的第 4.2.2 节中有 Set-Cookie 标头的规范
set-cookie = "Set-Cookie:" cookies
cookies = 1#cookie
使用以下语句非正式地,Set-Cookie 响应标头包含令牌 Set-Cookie:,后跟一个或多个 cookie 的逗号分隔列表。(# 的正式含义在上述符号在 A. NOTATIONAL CONVENTIONS 部分的RFC 733 中定义,第 5 点
定义了一个构造“#”,类似于“*”,如下:
<l>#<m>element表示至少
<l>和最多<m>元素,每个元素之间用 一个或多个逗号 (",")。
是的,RFC 2109 已被 RFC 2965 淘汰,而后者又被 RFC 6265 淘汰。
不,在这种情况下它不会改变任何东西
Set-Cookie折叠【讨论】:
Set-Cookie 标头?