警告:无法验证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?