2012-01-13 24 views
3

所以我記得有一次,當我試圖做一個AJAX帖子時,我必須將form_authenticity_token作爲其中一個數據傳遞給rails。出於某種原因,不這樣做會產生某種錯誤,我會立即註銷。有沒有辦法仍然有這個這個真實性令牌的表單提交,但不是阿賈克斯後?換句話說,我不想在我的發佈數據中傳遞驗證令牌。在沒有傳入authenticity_token的情況下在軌道中做AJAX Post

+0

您就可以使用AJAX GET請求,而不是和保持從僞造保護功能完好? – Teddy 2012-01-13 21:06:30

+0

如果您使用的是Rails jQuery UJS適配器(假設您自從標記jQuery以來),那麼它將始終提交真實性標記以及* any * ajax調用。你必須修改那個JS代碼來完成你所要求的。順便說一句,我希望這是一個沒有人會使用的網站,因爲這是一個壞主意。 – iwasrobbed 2012-01-13 21:11:41

+0

作爲ajax的一部分傳入auth令牌是一個壞主意?怎麼會這樣? – denniss 2012-01-13 21:39:22

回答

2

而不是禁用真實性令牌驗證,你可以只將它傳遞給javascript像這樣:

<%= javascript_tag "var AUTH_TOKEN = #{form_authenticity_token.inspect};" if protect_against_forgery? %>

然後只需提交AUTH_TOKEN以及任何AJAX帖子。

Source

4

documentation

您可以在控制器通過控制器的基礎上禁用CSRF保護:

skip_before_filter :verify_authenticity_token

相關問題