2012-12-30 191 views
0

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

另外,当您创建表单并传入请求时,Form对象会自动执行此验证吗?

的jQuery:

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

回答

1

如果您在您的项目有MIDDLEWARE_CLASSES'django.middleware.csrf.CsrfViewMiddleware',settings.py然后CsrfViewMiddleware自动验证csrf_token。这在documentation还提到:

对于所有传入的请求未使用HTTP GET,HEAD,OPTIONS 或迹线,CSRF饼干必须存在,而“csrfmiddlewaretoken” 字段必须存在和正确。如果不是,用户将得到一个 403错误。

该检查由CsrfViewMiddleware完成。