为什么Tornado的set_cookie函数总是为cookie的值加上引号?

2 投票
1 回答
833 浏览
提问于 2025-04-17 19:30

举个例子,在一个处理程序里,我写了:

self.set_cookie('name', "value", domain=my_domain)

然后我在我的浏览器(谷歌浏览器)里查看这个cookie的值,结果总是得到 "value",而不是 value

我该怎么做才能设置没有引号的cookie呢?

1 个回答

2

根据RFC6265的规定,cookie的值可以用双引号括起来,也可以不加引号(下面的语法定义部分有说明),这两种方式都是合法的,所以这个问题需要在客户端解决。

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
token             = <token, defined in [RFC2616], Section 2.2>

Cookie版本1规定,如果值里面有空格,就要用双引号括起来,而Cookie版本0则是用没有引号的值,并且把空格用编码字符表示(比如用%20表示空格)。而且,不同的浏览器在处理cookie时可能会有不同的表现。

撰写回答