逗号是cookie值中的有效字符

lee*_*tom 11 cookies http

在某些Web服务器中,带有逗号值的cookie将被拆分为两个cookie(一个值为空值).例如,"foo=bar,goo"将被视为"foo=bar;goo=".根据RFC,这是正确的吗?

我找到了这个RFC文档,但并不确切地知道它的含义.

cookie-pair       = cookie-name "=" cookie-value
cookie-name       = token
cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
                   ; US-ASCII characters excluding CTLs,
                   ; whitespace DQUOTE, comma, semicolon,
                   ; and backslash
Run Code Online (Sandbox Code Playgroud)

RFC 6265

Dan*_* W. 6

cookie-pair       = cookie-name "=" cookie-value
cookie-name       = token
cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )
cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E
                   ; US-ASCII characters excluding CTLs,
                   ; whitespace DQUOTE, comma, semicolon,
                   ; and backslash
Run Code Online (Sandbox Code Playgroud)

这些关键字是什么:cookie-pair,cookie-name,cookie-value,cookie-octet?

cookie-value是右边的一部分=.

cookie-octet是真正的价值,用双引号括起来或什么都没有.看到:

key="value"
Run Code Online (Sandbox Code Playgroud)

要么

key=value
Run Code Online (Sandbox Code Playgroud)

当你输入,(或;)看看会发生什么:

key="value,",key2="value2"
Run Code Online (Sandbox Code Playgroud)

要么

key=value,,key2=value2
Run Code Online (Sandbox Code Playgroud)

所以,你的假设不太正确,你不能在值中使用逗号或分号.


Rah*_*thi 5

不,他们是不允许的。

规格

此字符串是一个字符序列,不包括分号,逗号和空格。

可以在RFC2965RFC2616中进行检查

  • 然后,这些平台违反了规范。 (2认同)