所以我正在尝试使用 Ajax 和 Flask 将一些 jquery 数据从前端发送到后端,但我不断收到此错误,但我的所有其他代码都运行良好我尝试使用 type: 'POST' 和 $.post 来尝试发送数据,但我运气不佳。我也尝试使用 request.form 和 request.get_json(),但仍然没有运气。我尝试在邮递员中运行一个快速测试,它告诉我。我正在尝试运行 POST 请求。来自邮递员的代码<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><title>400 Bad Request</title><h1>Bad Request</h1><p>The CSRF token is missing.</p>蟒蛇烧瓶#all other code is fine...@users.route('/api/get_msg') #Both users can communicatedef get_msg(): text = Messages.query.all() users = Users.query.all() return jsonify([ { "msg": text[m].message, "user": text[m].sender.username } for m in range(len(text))])@users.route('/api/send_msg', methods=['POST'])def send_msg(): data = request.get_json() from_user = current_user msg_text = data["msg_text"] newMsg = { "msg_text": msg_text } msg_log = Message(message=msg_text, sender=from_user) db.session.add(msg_log) db.session.commit() return jsonify({"result", "success"})我试图让后端将消息保存到数据库,然后通过 get 请求将其发送回前端。就像聊天应用程序一样。我还试图找出使用 Flask 和 jquery 创建即时聊天应用程序的最佳方法。如果有人有一些建议。请告诉我。我已经在使用 pusher 实时推送消息。
1 回答

富国沪深
TA贡献1790条经验 获得超9个赞
HTTP 400 告诉您您缺少 CSRF 令牌。这用于验证通过表单或 JS 发送到服务器的数据。Flask 需要它用于表单,并且除非您包含form.hidden_tag()
在 Jinja 模板中,否则不会验证数据。
不过,我对您为什么在这里收到错误感到有些困惑。据我所知,默认情况下,Flask 不会对 AJAX 请求强制执行 CSRF 令牌。而且您没有发送表单请求,对吗?您是否已经在导入CSRFProtect?如果是这样,那么这就是问题所在,您只需在发送 AJAX 请求时将该令牌包含在标头中即可。
顺便说一句,我认为您可能打算在这里使用冒号:
return jsonify({"result", "success"})
添加回答
举报
0/150
提交
取消