gpt4 book ai didi

javascript - Flask_WTF csrf装饰器属性错误

转载 作者:行者123 更新时间:2023-12-03 07:35:13 26 4
gpt4 key购买 nike

我使用flask_wtf来保护不是表单的网页,而是从JavaScript发布Ajax数据的网页。

我收到“AttributeError:'module'对象没有'@csrf.error_handler'装饰器的属性'error_handler'',并且无法找出原因。

在 Flask 服务器上:

from flask_wtf import csrf
app = Flask(__name__)
app.config.from_object(config)
csrf.CsrfProtect(app)

@csrf.error_handler
def csrf_error(reason):
return render_template('404.html', reason=reason)

@app.route('/completed/')
def completed(results, methods=['POST']):
data = str(request.form['data'])

JavaScript:

function sendAjax(data){
//@param data: JSON stringified object
var csrfToken = document.getElementsByName("csrf_token").getAttribute("content");
var xhr = new XMLHttpRequest();
xhr.open('PUT', '/completed');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
if (xhr.status === 200) {
var userInfo = JSON.parse(xhr.responseText);
}
};
xhr.send(data);
}

html:

<!-- 'form' with hidden field just so can post data back to server -->
<form method="post" action="{{ url_for('completed') }}">
<meta id="csrf_token" content="{{ csrf_token() }}" />
</form>

最佳答案

您需要将错误处理程序与您的 CsrfProtect 实例关联起来。

from flask_wtf.csrf import CsrfProtect

app = Flask(__name__)
csrf = CsrfProtect(app)

@csrf.error_handler
def csrf_error(reason):
return render_template('404.html', reason=reason)

关于javascript - Flask_WTF csrf装饰器属性错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35643743/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com