0
我正在使用flask_wtf來保護不是表單的網頁,而是用於從JavaScript發佈Ajax數據的網頁。Flask_WTF csrf裝飾器屬性錯誤
我得到一個'AttributeError:'模塊'對象沒有屬性'error_handler'''@ csrf.error_handler'裝飾器,並不能解決原因。
的瓶服務器上:
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>