为什么Tornado的set_cookie函数总是为cookie的值加上引号?
举个例子,在一个处理程序里,我写了:
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时可能会有不同的表现。