Flask_CSRF保护(十一)

flask中使用 flask-wtf 模块开启CSRF保护的方法如下:

后端设置

from flask import Flask
from flask_wtf.csrf import CSRFProtect


app = Flask(__name__)

# 使用防csrf保护APP
csrf = CSRFProtect(app)

前端设置

在头部或底部增加下列代码:

<!--  如果开启csrf保护,需要在html页面中的head中定义如下代码  -->
<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)
        }
    }
})

取消保护

开启CSRF后,如果指定接口要取消保护,可以使用如下装饰器

@csrf.exempt      # 取消csrf保护
@app.route("/del", methods=["POST"])
def delete():
    pass
原文地址:https://www.cnblogs.com/testlearn/p/14133543.html