栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Flask和Ajax Post请求400

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Flask和Ajax Post请求400

如果您使用的是Flask-WTF CSRF保护,则需要免除您的视图或将CSRF令牌也包含在AJAX POST请求中。

豁免是通过装饰器完成的:

@csrf.exempt@app.route("/json_submit", methods=["POST"])def submit_handler():    # a = request.get_json(force=True)    app.logger.log("json_submit")    return {}

要将令牌包含在AJAX请求中,请将令牌内插到页面中的某个位置;在

<meta>
标题或生成的Javascript中,然后设置
X-CSRFToken
标题。使用jQuery时,请使用
ajaxSetup
hook。

使用元标记的示例(来自Flask-WTF CSRF文档):

<meta name="csrf-token" content="{{ csrf_token() }}">

在您的JS代码中:

var csrftoken = $('meta[name=csrf-token]').attr('content')$.ajaxSetup({    beforeSend: function(xhr, settings) {        if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type)) { xhr.setRequestHeader("X-CSRFToken", csrftoken)        }    }})

您的处理程序实际上尚未发布JSON数据;它仍然是常规的url编码

POST
(数据将最终在
request.form
Flask一侧);您必须将AJAX内容类型设置为
application/json
并用于
JSON.stringify()
实际提交JSON:

var request = $.ajax({   url: "/json_submit",   type: "POST",   contentType: "application/json",   data: JSON.stringify({     id: id,      known: is_known   }),  })    .done( function (request) {})

现在的数据可以作为一个Python结构与访问

request.get_json()
方法。

dataType: "json",
对参数
$.ajax
时,你的看法是只需要 返回
JSON(例如,你使用
flask.json.jsonify()
产生JSON响应)。它使jQuery知道如何处理响应。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/404022.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号