2014-06-18 41 views
4

我在應用程序中通過javascript發送一些非常簡單的ajax post和補丁請求。功能很好,按預期工作。但是,我沒有在ajax請求參數中看到真實性標記,它仍然有效。Rails 4沒有真實性令牌的Ajax請求

的JavaScript(jQuery的)

$.ajax({ 
    type:'PATCH', 
    url: '/dashboard/goals/#{@goal.id}.js', 
    data: $.param({ 
    new_invitation: { 
     recipient_id: recId, 
     type: "GoalInvite", 
     user_id : #{current_user.id} 
    } 
    }) 
}); 

和PARAMS出現在日誌中如下 -

Parameters: {"new_invitation"=>{"recipient_id"=>"24", "type"=>"GoalInvite", "user_id"=>"23"}, "id"=>"234"} 

沒有真實性令牌。我想我知道如何加入它,但我很驚訝它甚至沒有它。任何人都可以對此有所瞭解嗎?

+1

'protect_from_forgery' in app。控制器。 ? – Nithin

+0

是的,它是在應用程序控制器 –

回答

12

如果您檢查請求對象,您將(希望)看到有一個名爲HTTP_X_CSRF_TOKEN的請求頭包含真實性標記。 jquery_ujs庫爲您處理這個問題,因此您不必手動在AJAX請求中包含該令牌。

+0

是頭'X-CSRF-令牌:' –

+1

它的工作!在'application.js'文件中放入'= require jquery_ujs'行後。謝謝。 – yeyo

+0

+1提醒我,jquery_ujs庫爲我做這件事。我正在開發一個面向外部/客戶端的應用程序,並沒有包含這些內容,並且無法弄清楚爲什麼只有這個特定的Ajax請求會抱怨認證令牌。謝謝! – gregblass

相關問題