Chrome上的Python Tornado XSRF cookie问题
我是Tornado的新手,我正在尝试用xsrf cookie构建一个非常简单的登录表单。 代码如下:Chrome上的Python Tornado XSRF cookie问题,python,google-chrome,cookies,tornado,Python,Google Chrome,Cookies,Tornado,我是Tornado的新手,我正在尝试用xsrf cookie构建一个非常简单的登录表单。 代码如下: class MainHandler(tornado.web.RequestHandler): def get(self): self.render("index.html") def post(self): self.write("You ahve submitted the form.!") class App(tornado.web.Appli
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.render("index.html")
def post(self):
self.write("You ahve submitted the form.!")
class App(tornado.web.Application):
def __init__(self):
handlers = [
(r"/", MainHandler),
]
settings = dict(xsrf_cookies=True)
tornado.web.Application.__init__(self, handlers, **settings)
if __name__ == "__main__":
app = App()
server = tornado.httpserver.HTTPServer(app)
server.listen(7001)
tornado.ioloop.IOLoop.current().start()
形式也很简单:
<html>
<head><title>Text XSRF</title></head>
<body>
<form method="post">
{% module xsrf_form_html() %}
{% raw xsrf_form_html() %}
Username:<input type="text" name="username">
Password:<input type="password" name="pwd">
<input type="submit" value="submit">
</form>
</body>
</body>
</html>
当我打开Chrome并输入hxxp://xsrf.test.com:7001,我可以看到登录表单,但是当发送POST请求时,我得到一个
403 (XSRF cookie does not match POST argument)
然而,如果我击中hxxp://localhost:7001,我可以按预期提交表格。IE和Safari对这两个域都适用。所以我想知道我在Chrome中使用“xsrf.test.com”来实现这一点是否做错了什么
我确实检查了Chrome->设置->内容设置->Cookies->允许设置本地数据是否正确选择。表单是什么样子的?您是否包含
{%module xsrf_form_html()%}
?@BenDarnell根据请求添加了表单,是的,我包含了表单,否则它不会用于其他浏览器。我捕获了网络包,发现问题确实是响应中的“Set Cookie”对于添加到主机文件中的域的Chrome不起作用。但它在使用“localhost”的Chrome上工作。我现在有点困惑。表格是什么样子的?您是否包含{%module xsrf_form_html()%}
?@BenDarnell根据请求添加了表单,是的,我包含了表单,否则它不会用于其他浏览器。我捕获了网络包,发现问题确实是响应中的“Set Cookie”对于添加到主机文件中的域的Chrome不起作用。但它在使用“localhost”的Chrome上工作。我现在有点困惑。
403 (XSRF cookie does not match POST argument)