Rails + Emberjs:无法验证CSRF令牌的真实性

时间:2015-10-01 05:42:42

标签: ruby-on-rails ember.js

我很高兴使用rails作为带有Emberjs前端的api。我正在获得一个完成的422不可处理实体'每当我尝试执行POST请求时,都无法验证CSRF令牌的真实性

我已经看过几个帖子和解决方案,说要插入这个功能

$(function() {
    var token = $('meta[name="csrf-token"]').attr('content');
    return $.ajaxPrefilter(function(options, originalOptions, xhr) {
        return xhr.setRequestHeader('X-CSRF-Token', token);
    });
});

在ember-cli项目中实施CSRF的适当位置在哪里?

更新时间:10/1/2015

我的app / adapters / application.js现在看起来像这样:

import DS from 'ember-data';

export default DS.ActiveModelAdapter.extend({
  headers: Ember.computed(function(){
    var token = Ember.$('meta[name="csrf-token"]').attr('content');

    return {"X-CSRF-Token": token};
  })
});

但是,我仍然收到相同的错误消息......

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是将其添加到您的清单文件中:

#= require jquery-ujs

或者您可以将应用程序适配器扩展为始终包含CSRF令牌:

ApplicationAdapter = DS.RESTAdapter.extend
  headers:
    "X-CSRF-Token": $('meta[name="csrf-token"]').attr('content')