我收到此错误:我的网络应用上的每个帖子请求都有ActionController::InvalidAuthenticityToken
。
我的临时解决方案是将此添加到控制器:skip_before_action :verify_authenticity_token
但当然会创建漏洞......
有没有人知道我为什么会收到此错误,所以我可以修复它而不会产生漏洞?
谢谢。
答案 0 :(得分:4)
您需要通过HTTP调用向控制器发送身份验证令牌。通常,如果您使用form_for
帮助程序,则不需要明确发送真实性令牌。但是,如果您使用HTML表单<form>
或Ajax请求,那么您必须在调用时发送此令牌。
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) %>