2015-08-28 97 views
0

我得到這個錯誤:ActionController::InvalidAuthenticityToken對我的web應用程序的每一個單一的發佈請求。Rails錯誤:ActionController :: InvalidAuthenticityToken

我的臨時解決方案是將這個控制器:skip_before_action :verify_authenticity_token但當然會創建一個漏洞......

任何一個人知道爲什麼,我可能會得到這個錯誤,這樣我就可以修復它,而無需創建漏洞?

謝謝。

+0

你怎麼做POST請求? – EugZol

+0

使用普通的html。那是爲什麼?我需要使用導軌?我怎麼做? – Pabi

+0

你可以發佈你的控制檯輸出到你的文章?此外,以及影響您的POST請求的任何其他控制器? –

回答

2

您需要將您的HTTP調用的身份驗證令牌發送給控制器。通常,如果您使用的是助手,那麼您不需要明確發送真實性標記。但是,如果您使用HTML表單<form>或Ajax請求,那麼您必須在調用時發送該令牌。

阿賈克斯

$.ajax({ 
....., 
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))}, 
....... }); 

放在這裏面的html表單標籤

<%= tag(:input, :type => "hidden", :name => request_forgery_protection_token.to_s, :value => form_authenticity_token) %> 
+0

我有一個問題並沒有完全涉及到這一點。但是,有沒有一種方式,用戶可以僞造形式並提交一個假的,例如通過在數字輸入中更改最大值的值?如果是的話,我該如何防止這種情況發生呢? – Pabi

+0

另外,當你說把這個內部的HTML表單標籤,究竟在哪裏呢? Just

「hidden」,:name => request_forgery_protection_token.to_s,:value => form_authenticity_token) – Pabi

+0

@ Pabi閱讀這個http://api.rubyonrails.org/classes/ActionController/RequestForgeryProtection.html –

相關問題