weixin_33743661 2020-01-09 15:25 采纳率: 0%
浏览 102

Ajax带烧瓶-seasurf调用

I am developing a small app on localhost and using flask-seasurf to prevent csrf attacks. All my non-ajax forms work correctly with flask-seasurf. I have one form that triggers an ajax call to '/checkajax' on form submit; this worked until I started to use flask-seasurf but now I get a console error and the ajax doesn't work:

Warning in flask_seasurf: Forbidden (CSRF token missing or incorrect): /checkajax 

The form triggering the ajax call has the standard hidden field containing the 'csrf_token()' function call of flask-seasurf embedded in the jinja page template:

<input id="csrf-token" type="hidden" name="_csrf_token" value="{{ csrf_token() }}">

The ajax call structure is:

$("#submit").submit(function(event) {
    event.preventDefault();
    $.ajax({
        url: "/checkajax",
        data: {...},
        type: "POST",
        datatype: "text",
        success: function(response){
            ...
        },
        error: function(response) {
            ...
        }
    });
});

I can see from the site cookie that there is an entry for '_csrf_token' generated by flask-seasurf. Can anyone give some insight as to why this ajax call is now not working?

  • 写回答

1条回答 默认 最新

  • 程序go 2020-01-09 16:53
    关注

    The solution to my problem was to modify the header of the ajax call to include X-CSRFToken defined as the flask-seasurf token from my form:

    var csrf_token = $("csrf-token").val()
    
    $("#submit").submit(function(event) {
        event.preventDefault();
        $.ajax({
            headers: {"X-CSRFToken", csrf_token},
            url: "/checkajax",
            data: {...},
            type: "POST",
            datatype: "text",
            success: function(response){
                ...
            },
            error: function(response) {
                ...
            }
        });
    });
    

    Hope that helps someone else.

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置