2012-12-30 218 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完成。