2012-10-08 38 views
0

在我的Django模板中,我有一個POST表單。它包含標記{%csrf_token%}。如果我通常提交此表格,那麼一切正常。不過,我需要通過Javascript/jQuery來改變一個表單輸入值:當輸入值由javascript更改時,CSRF驗證失敗

$('input').val(id); 

如果我這樣做,那麼我得到了「CSRF驗證失敗」的錯誤消息時,我提交表單。我通過Javascript提交表單,但只要我不動態改變任何值,這就不成問題。

我一直在通過在我的Python函數上面編寫@csrf_exempt來「解決」這個問題。但是,這會跳過安全性。有另一種方法嗎?

回答

0

命令$('input').val(id);覆蓋所有可以找到的輸入條目,如此隱藏csrf_token輸入丟失其值。嘗試製作更具體的選擇器。例如:

$('input[name=change-me]').val(id); 
+0

是的,它的工作原理! – user984003