警告:无法验证 CSRF 令牌的真实性 rails
警告:无法验证 CSRF 令牌的真实性 rails
我正在使用AJAX从视图向控制器发送数据,但是我收到了以下错误:
WARNING: Can\'t verify CSRF token authenticity
我认为我必须将此令牌与数据一起发送。
有人知道我应该如何做吗?
编辑:我的解决方案
我通过在AJAX中添加以下代码来解决这个问题:
headers: { 'X-Transaction': 'POST Example', 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content') },
admin 更改状态以发布 2023年5月24日
最好的方法实际上就是直接使用<%= 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) %>" })
你应该这样做:
-
确保你的布局中有
<%= 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') } });