2015-08-28 98 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 –

相关问题