【问题标题】:The CSRF token is missingCSRF 令牌丢失
【发布时间】:2020-11-23 05:13:45
【问题描述】:

我正在使用烧瓶并尝试添加一个新的路由来处理用户在我的 js 代码中发送的 POST 请求。 测试服务器时(不使用前端),在我的 POST 请求之后,我得到了问题

400 Bad Request
Bad Request
The CSRF token is missing

这是我的请求代码

@module.route('/check_answer', methods=['POST'], host=Config.HOST)

def check():
data = request.get_json()
user_ans = data['user_ans']
right_ans = data['right_ans']
return jsonify({'user_ans': user_ans, 'right_ans': right_ans})

我找不到这个案例的答案,但如果存在,有人可以与我分享吗?

【问题讨论】:

  • 首先,您的代码中存在缩进问题。您的 check() 函数体需要正确缩进。其次,您如何测试请求?因为 Flask 或 Django 需要在发出请求时传递 CSRF 令牌。

标签: python flask csrf


【解决方案1】:

您需要在表单中添加一个 csrf_token。

使用 FlaskForm 时,像平常一样渲染表单的 CSRF 字段。

<form method="post">
    {{ form.csrf_token }}
</form>

如果模板不使用 FlaskForm,则使用表单中的标记呈现隐藏输入。

<form method="post">
    <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/>
</form>

【讨论】:

  • 我正在使用按钮。所以我添加了这个输入并尝试使用客户端测试路由,但又遇到了问题。单击按钮我收到错误"POST /check_answer HTTP/1.1" 400 -
  • 将令牌添加到您的按钮并重试
  • 我应该在按钮标签之间添加它吗?
猜你喜欢
  • 1970-01-01
  • 2021-07-14
  • 2018-09-07
  • 2018-03-11
  • 1970-01-01
  • 2014-12-25
  • 2021-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多