如果我从一个按钮发送一个AJAX POST请求。我是否需要在我的视图中验证CSRF令牌,或者Django在接受POST时会自动为您执行此操作?如果没有,我如何手动验证它?
此外,当您创建表单并传入请求时,表单对象将自动执行此验证,这是正确的吗?
jQuery:
<script>
$(document).ready(function() {
$('#button1').click(function(){
$.post("/", {
unique_id : "{{ unique_id }}",
csrfmiddlewaretoken: '{{ csrf_token }}'
});
});
});
</script>
发布于 2012-12-31 05:06:13
如果您在项目settings.py
中的MIDDLEWARE_CLASSES
中有'django.middleware.csrf.CsrfViewMiddleware',
,那么CsrfViewMiddleware
会自动验证csrf_token
。在documentation中也提到了这一点:
对于所有未使用HTTP GET、HEAD、OPTIONS或TRACE的传入请求,必须存在CSRF cookie,并且'csrfmiddlewaretoken‘字段必须存在且正确。如果不是,用户将得到一个403错误。
此检查由CsrfViewMiddleware完成。
https://stackoverflow.com/questions/14094527
复制相似问题