为了账号安全,请及时绑定邮箱和手机立即绑定

我如何用 Flask 和 jquery 解决这个问题?

我如何用 Flask 和 jquery 解决这个问题?

慕码人8056858 2021-06-28 22:43:40
所以我正在尝试使用 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"})


查看完整回答
反对 回复 2021-07-01
  • 1 回答
  • 0 关注
  • 234 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信