转载

java – 有效Cookie值的明确指南

我知道还有其他问题,但他们似乎有答案是假设而不是确定.

我有限的理解是cookie值是:

>分号已用于分隔单个cookie中的cookie属性.

> equals符号用于分隔cookie名称和值

>冒号用于分隔标题中的多个Cookie.

还有其他“特殊”字符吗?

其他一些q / a表明一个base64对值进行编码,但这当然可能包括等于当然无效的等号.

我也看到了一些建议,可能会引用价值,但会导致其他问题.

>需要引用特殊字符吗?

>引用值支持通常的反斜杠转义机制.

RFC

我读了一些RFC,包括许多cookie RFCS中的一些,但我仍然不确定是否存在对另一个RFC等的交叉引用,没有明确的简单解释或“回答”我的查询的样本.

希望没有人会说阅读RFC因为问题变成哪个RFC ……?

我想我也读到不同的浏览器有不同的规则,所以如果这很重要,请在你的答案中注意这一点.

最新的RFC是 6265

,它声明以前的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

原文  https://codeday.me/bug/20190113/520400.html
正文到此结束
Loading...