警告:无法验证 CSRF 令牌真实性导轨
问题描述:
我正在使用 AJAX 将数据从视图发送到控制器,但出现此错误:
I am sending data from view to controller with AJAXand I got this error:
警告:无法验证 CSRF 令牌的真实性
WARNING: Can't verify CSRF token authenticity
我想我必须将此令牌与数据一起发送.
I think I have to send this token with data.
有人知道我该怎么做吗?
Does anyone know how can I do this ?
我的解决方案
我通过将以下代码放入 AJAX 帖子中来做到这一点:
I did this by putting the following code inside the AJAX post:
headers: {
'X-Transaction': 'POST Example',
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
},
答
你应该这样做:
确保您的布局中有
<%= csrf_meta_tag %>
将 beforeSend
添加到所有 ajax 请求中以设置标题,如下所示:
Add beforeSend
to all the ajax request to set the header like below:
$.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);
}
});
要在您可以使用的所有请求中发送令牌:
To send token in all requests you can use:
$.ajaxSetup({
headers: {
'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
}
});