gpt4 book ai didi

python - Tornado - POST 中缺少 '_xsrf' 参数

转载 作者:太空狗 更新时间:2023-10-29 17:28:53 25 4
gpt4 key购买 nike

从下面的代码中可以看出,我有一个用于注册的GET,它将其工作委托(delegate)给POST

class RegistrationHandler(tornado.web.RequestHandler):
def get(self):
s = """
<h1>Register</h1>
<form method="post" action="/register">
<div>
<label>User</label>
<input name="user_name" value="test@test.com"/>
</div>
<div>
<label>password</label>
<input name="password" type="password"/>
</div>
<div>
<input type="submit" value="submit"/>
</div>
</form>
"""
self.write(s)

@log_exception()
def post(self):
user_name = self.request.arguments['user_name']
password = self.request.arguments['password']
log.debug('Registering user with credentials %r' % (user_name, password))
with sa_session() as db_session:
User.register(user_name, password, db_session)

当我从网络浏览器访问该 URL 时,我会收到一张注册表,提交后我会收到“403:禁止”。

控制台日志:

2012-10-15 11:27:42,482 - __main__ - DEBUG - Starting server on port 8080
2012-10-15 11:27:49,377 - root - INFO - 304 GET /register (127.0.0.1) 0.78ms
2012-10-15 11:27:53,143 - root - WARNING - 403 POST /register (127.0.0.1): '_xsrf' argument missing from POST
2012-10-15 11:27:53,144 - root - WARNING - 403 POST /register (127.0.0.1) 1.05ms

此错误是什么意思,我该如何更正它?谢谢。

最佳答案

我想您在设置中启用了跨站点请求伪造 cookie(默认情况下它是打开的)。

Tornado's XSRF is here

要解决此问题,请在您的设置中将其关闭:

settings = {
"xsrf_cookies": False,
}

注意:通常您不想关闭它,通常您会在这样的模板中生成 HTML:请注意添加 XSRF cookie 的 xsrf 位。

 <form method="post" action="/register">
<input name="user_name" value="test@test.com"/>
<input name="password" type="password"/>
<input type="submit" value="submit"/>
{% raw xsrf_form_html() %}
</form>

---编辑以下评论---而不是:

  def get(self):
loader = template.Loader("resources")
page_contents = loader.load('register_page.html').generate()
self.write(page_contents)

做:

  def get(self):
self.render("../resources/register_page.html")

或更好:

  def get(self):
self.render("register_page.html")

(并将其放在您的模板目录中)

关于python - Tornado - POST 中缺少 '_xsrf' 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12890105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com