我遇到的问题是我不明白原因......基本上我无法在Tornado / Python上设置cookie,无论是普通cookie还是安全cookie。我的代码:
class API(BaseHandler):
def get(self):
self.set_secure_cookie("a_cookie", "a_value")
a_cookie = self.get_secure_cookie("a_cookie")
print(">>> a_cookie ", a_cookie)
self.set_cookie("a_cookie", "a_value")
a_cookie = self.get_cookie("a_cookie")
print(">>> a_cookie ", a_cookie)
输出结果为:
>>> a_cookie None
>>> a_cookie None
类BaseHandler扩展了tornado.web.RequestHandler。
关于安全cookie,我设置了cookie_secret。
我不明白我何时设置cookie的原因,我无法理解。我相信我遵守网站上的规则(http://www.tornadoweb.org/en/stable/guide/security.html,https://technobeans.com/2012/08/07/tornado-cookies/)
答案 0 :(得分:5)
这里要理解的重要一点是 - Cookie会在下一个请求中设置,而不是在当前上设置。
get_cookie
获取传入请求中已存在的Cookie,即浏览器发送的Cookie。
Cookie的工作方式如下:
之后,get_cookie
将能够从传入的请求中获取cookie。
如果您第二次运行API
处理程序,您将在输出中看到cookie的值。
有关详情,请参阅github上的source code for get_cookie
。