我正在使用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);
}
}
});