警告:无法验证CSRF令牌真实性轨道
我使用AJAX将数据从视图发送到控制器,并且出现此错误:
警告:无法验证CSRF令牌的真实性
我想我必须发送带有数据的令牌。
有谁知道我该怎么做?
编辑:我的解决方案
我通过将下面的代码放入AJAX文章中来做到这一点:
headers: {
'X-Transaction': 'POST Example',
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
你应该做这个:
确保你的布局中有<%= csrf_meta_tag %>
将beforeSend
添加到所有的ajax请求中,设置如下所示的标题:
$.ajax({ url: 'YOUR URL HERE',
type: 'POST',
beforeSend: function(xhr) {xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'))},
data: 'someData=' + someData,
success: function(response) {
$('#someDiv').html(response);
}
});
要在所有请求中发送令牌,您可以使用:
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
});
最好的方法是使用<%= form_authenticity_token.to_s %>
直接在你的rails代码中打印出令牌。 您不需要使用javascript来搜索dom中的csrf令牌,因为其他帖子提到。 只需添加如下的标题选项;
$.ajax({
type: 'post',
data: $(this).sortable('serialize'),
headers: {
'X-CSRF-Token': '<%= form_authenticity_token.to_s %>'
},
complete: function(request){},
url: "<%= sort_widget_images_path(@widget) %>"
})
如果我没有记错,你必须将下面的代码添加到你的表单中,以摆脱这个问题:
<%= token_tag(nil) %>
不要忘记参数。
链接地址: http://www.djcxy.com/p/63555.html上一篇: WARNING: Can't verify CSRF token authenticity rails
下一篇: How to disable logging of asset pipeline (sprockets) messages in Rails 3.1?