我很高兴使用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};
})
});
但是,我仍然收到相同的错误消息......
答案 0 :(得分:1)
最简单的解决方案是将其添加到您的清单文件中:
#= require jquery-ujs
或者您可以将应用程序适配器扩展为始终包含CSRF令牌:
ApplicationAdapter = DS.RESTAdapter.extend
headers:
"X-CSRF-Token": $('meta[name="csrf-token"]').attr('content')