【发布时间】:2014-09-30 17:47:28
【问题描述】:
我目前正在通过 Tornado 实施一个包含 Backbone Marionette 的项目,并且遇到了 XSRF 令牌的问题。由于 XSRF 不是通过模板传递的(通过 xsrf_form_html() ),当用户登录应用程序时,向登录 url "//login" 发出 GET 请求并通过以下方式检索 xsrf 令牌:
class LoginHandler(BaseHandler):
"""
"""
def get(self):
token = self.xsrf_token
self.respond(dict(_xsrf=token))
self.respond 看起来像:
def respond(self, response=None):
"""
:param data:
:return:
"""
if response is not None:
self.set_header('Content-Type', 'application/json')
self.write(json.dumps(response))
else:
self.set_header('Content-Type', 'text/plain')
self.write("")
但是,每当向服务器发送 POST(字段值为 "_xsrf" : token)时,我都会得到标志性的“XSRF cookie 与 POST 参数不匹配”。看起来好像服务器上的 xsrf 令牌在每次请求时都在重新生成,因为 xsrf cookie 不存在(到目前为止,我确保 cookie 存在的尝试失败了......不完全确定如何坚持)。也许我在这里遗漏(或误解)了一些关键的东西,但我希望那里的其他人遇到过这样的范例并有解决方案或建议。
提前致谢!
【问题讨论】:
标签: post backbone.js cookies tornado csrf