龙卷风set_cookie阵列支持

时间:2018-04-04 07:13:05

标签: cookies tornado

Tornado是否支持数组cookie?

在PHP中,我们通过

设置数组cookie
setcookie('UserTable[Name]','Tinywan',time()+3600);
setcookie('UserTable[Age]','24',time()+3600);
setcookie('UserTable[Email]','7514@xxx.com',time()+3600);

但在龙卷风中,它不起作用!

self.set_cookie('UserTable[Name]', 'Tinywan', expires_days=30)
self.set_cookie('UserTable[Age]', '24', expires_days=30)
self.set_cookie('UserTable[Email]', '7514@xxx.com', expires_days=30)

2 个答案:

答案 0 :(得分:0)

由于Python Http cookie模块在Key中出现非法字符时引发错误

from http import cookies


C = cookies.SimpleCookie()
C['UserTable[Name]'] = 'Tinywan'

<强>回溯

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/http/cookies.py", line 521, in __setitem__
    self.__set(key, rval, cval)
  File "/usr/local/lib/python3.6/http/cookies.py", line 511, in __set
    M.set(key, real_value, coded_value)
  File "/usr/local/lib/python3.6/http/cookies.py", line 380, in set
    raise CookieError('Illegal key %r' % (key,))
http.cookies.CookieError: Illegal key 'UserTable[Name]'
>>> C['UserTableName'] = 'Tinywan'

答案 1 :(得分:0)

您对Cookie名称使用非法字符,即[]字符是非​​法的。

来自MDN documentation

  

<cookie-name>可以是除控制字符(CTL),空格或制表符之外的任何US-ASCII字符。它也不能包含如下所示的分隔符:()&lt; &GT; @ ,; :\&#34; / []? = {}。

你真的不需要这些角色。 UserTableName应该可以正常工作。