猿问

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

所以我正在尝试使用 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 communicate

def 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 实时推送消息。


慕码人8056858
浏览 235回答 1
1回答

富国沪深

HTTP 400 告诉您您缺少 CSRF 令牌。这用于验证通过表单或 JS 发送到服务器的数据。Flask 需要它用于表单,并且除非您包含form.hidden_tag()在 Jinja 模板中,否则不会验证数据。不过,我对您为什么在这里收到错误感到有些困惑。据我所知,默认情况下,Flask 不会对 AJAX 请求强制执行 CSRF 令牌。而且您没有发送表单请求,对吗?您是否已经在导入CSRFProtect?如果是这样,那么这就是问题所在,您只需在发送 AJAX 请求时将该令牌包含在标头中即可。顺便说一句,我认为您可能打算在这里使用冒号:return&nbsp;jsonify({"result",&nbsp;"success"})
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答