0

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

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

jQuery:

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

1 回答 1

1

如果你'django.middleware.csrf.CsrfViewMiddleware',MIDDLEWARE_CLASSES你的项目中,settings.py那么CsrfViewMiddleware会自动验证csrf_token. 文档中也提到了这一点:

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

此检查由 CsrfViewMiddleware 完成。

于 2012-12-30T21:06:13.210 回答