Circle Image

Wen Lin Gang

Ruby & Go Full-stack programmer @ Lifelong learner.

Ajax Can’t verify CSRF token authenticity rails

在 rails 开发中,经常会遇到需要异步请求的需求,这个时候使用 jQuery 的 Ajax 十分方便,但是在使用过程中,我们有时会遇到:Can't verify CSRF token authenticity 发生此错误是因为在 rails 中发送 Ajax 请求时,头信息中没有加入 csrf-token,导致请求头信息验证失败

确保在 layout 中加入了下方代码:

<%= csrf_meta_tag %>

在 Ajax 的 beforeSend 中加入如下代码:

$.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')
  }
});