CSRF令牌验证

时间:2012-12-30 20:51:05

标签: django

如果我从按钮发送AJAX POST请求。我是否需要在视图中验证CSRF令牌,或者Django在接受POST时是否自动为您执行此操作?如果没有,我如何自己手动验证?

另外,在创建表单并传入请求时,Form对象是否会自动执行此验证是否正确?

jQuery的:

<script>
$(document).ready(function() {  
  $('#button1').click(function(){
    $.post("/", { 
      unique_id : "{{ unique_id }}",
      csrfmiddlewaretoken: '{{ csrf_token }}'
    });
  });
});
</script>

1 个答案:

答案 0 :(得分:1)

如果项目'django.middleware.csrf.CsrfViewMiddleware',中的MIDDLEWARE_CLASSES中有settings.py,则CsrfViewMiddleware会自动验证csrf_tokendocumentation中也提到了这一点:

  

对于所有未使用HTTP GET,HEAD,OPTIONS的传入请求   或TRACE,必须存在CSRF cookie,并且'csrfmiddlewaretoken'   字段必须存在且正确。如果不是,用户将得到一个   403错误。

     

此检查由CsrfViewMiddleware完成。