【发布时间】:2020-04-27 05:57:47
【问题描述】:
我正在 localhost 上开发一个小应用程序,并使用 flask-seasurf 来防止 csrf 攻击。我所有的非 ajax 表单都可以在 flask-seasurf 中正常工作。我有一个表单在表单提交时触发对“/ checkajax”的ajax调用;这一直有效,直到我开始使用 flask-seasurf 但现在我收到控制台错误并且 ajax 不起作用:
Warning in flask_seasurf: Forbidden (CSRF token missing or incorrect): /checkajax
触发ajax调用的表单有标准的隐藏字段,包含flask-seasurf的'csrf_token()'函数调用,嵌入到jinja页面模板中:
<input id="csrf-token" type="hidden" name="_csrf_token" value="{{ csrf_token() }}">
ajax调用结构为:
$("#submit").submit(function(event) {
event.preventDefault();
$.ajax({
url: "/checkajax",
data: {...},
type: "POST",
datatype: "text",
success: function(response){
...
},
error: function(response) {
...
}
});
});
我可以从站点 cookie 中看到,flask-seasurf 生成了一个“_csrf_token”条目。谁能提供一些关于为什么这个 ajax 调用现在不起作用的见解?
【问题讨论】: