gpt4 book ai didi

java - 有效 Cookie 值的明确指南

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:02:12 25 4
gpt4 key购买 nike

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

我有限的理解是 cookie 值是:

  • 已经使用分号分隔单个 cookie 中的 cookie 属性。
  • 等号用于分隔 cookie 名称和值
  • 冒号用于分隔 header 中的多个 cookie。

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

其他一些 q/a 建议一个 base64 对值进行编码,但这当然可能包含等号,这当然是无效的。

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

  • 特殊字符需要加引号吗?
  • 引用的值是否支持通常的反斜杠转义机制。

征求意见稿我阅读了一些 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 的规定,你应该没问题。

如果您需要传递包含任何禁止字符的 cookie 值,您的应用程序需要对这些值进行自己的编码和解码;例如使用 base64。

关于java - 有效 Cookie 值的明确指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6108207/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com