如何在纯Javascript中使用CSRF保护通过Ajax发布WTForm

时间:2018-12-29 20:18:02

标签: javascript python ajax flask flask-wtforms

我正在使用flask-wtf处理表单,通过POST请求将数据发送到我的数据库以进行验证,最后将用户重定向到另一条路由,一切正常进行。下一步,我想使用AJAX避免刷新页面,而又不会失去通常通过Jinja2通过模板中的hidden_​​tag添加的 CSRF令牌保护。

看看flask-wtf documentation,提供的解决方案使用jQuery。我环顾四周,但找不到使用纯Javascript 来获得相同结果的代码段。具体来说,虽然我知道如何在JS中使用XmlHttpRequest方法,但我不知道如何在其中包含CSRF令牌。

这是docs中提供的jQuery解决方案:

<script type="text/javascript">
    var csrf_token = "{{ csrf_token() }}";

    $.ajaxSetup({
        beforeSend: function(xhr, settings) {
            if (!/^(GET|HEAD|OPTIONS|TRACE)$/i.test(settings.type) && !this.crossDomain) {
                xhr.setRequestHeader("X-CSRFToken", csrf_token);
            }
        }
    });

0 个答案:

没有答案