我知道还有其他问题,但他们似乎有答案是假设而不是确定.
我有限的理解是cookie值是:
>分号已用于分隔单个cookie中的cookie属性.
> equals符号用于分隔cookie名称和值
>冒号用于分隔标题中的多个Cookie.
还有其他“特殊”字符吗?
其他一些q / a表明一个base64对值进行编码,但这当然可能包括等于当然无效的等号.
我也看到了一些建议,可能会引用价值,但会导致其他问题.
>需要引用特殊字符吗?
>引用值支持通常的反斜杠转义机制.
RFC
我读了一些RFC,包括许多cookie RFCS中的一些,但我仍然不确定是否存在对另一个RFC等的交叉引用,没有明确的简单解释或“回答”我的查询的样本.
希望没有人会说阅读RFC因为问题变成哪个RFC ……?
我想我也读到不同的浏览器有不同的规则,所以如果这很重要,请在你的答案中注意这一点.
,它声明以前的Cookie 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
从而:
>特殊字符是空格字符,双引号,逗号,分号和反斜杠.等于不是一个特殊的角色.
>根本不能使用特殊字符,但双引号可以包围该值.
>不能引用特殊字符.
>反斜杠不是逃避.
因此可以使用base-64编码,因为equals并不特殊.
最后,据我所知,RFC 6265 cookie值已定义,以便它们可以与任何实现任何Cookie RFC的浏览器一起使用.但是,如果您尝试使用不符合RFC 6265的cookie值(但可以说确实符合早期的RFC),您可能会发现cookie行为因浏览器而异.
简而言之,符合RFC 6265的字母,你应该没问题.
翻译自:https://stackoverflow.com/questions/6108207/definite-guide-to-valid-cookie-values