最近使用Flask,用Ajax向后端发请求,Get没有错误,但是Post的话无法跑通,提示400 Bad Request,使用Postman之后,提示The CSRF token is missing.
说明是CSRF的问题,阻止了Request,我开始以为自带的Flask没有开启CSRF,后来想起我是Cookiecutter部署的Flask,已经默认开启了CSRF。
因此,解决办法就是:
- 在header中增加:
<meta name="csrf-token" content="{{ csrf_token() }}" />
- 在js中增加:
<script type="text/javascript">
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
</script>