警告:无法验证 CSRF 令牌的真实性 rails

10 浏览
0 Comments

警告:无法验证 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日
0
0 Comments

最好的方法实际上就是直接使用<%= 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) %>"
})

0
0 Comments

你应该这样做:

  1. 确保你的布局中有<%= csrf_meta_tag %>

  2. 添加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')
  }
});

0