【问题标题】:Rails + Emberjs: Can't verify CSRF token authenticityRails + Emberjs:无法验证 CSRF 令牌的真实性
【发布时间】:2015-12-29 01:43:22
【问题描述】:

我刚开始使用 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 的合适位置在哪里?

更新:2015 年 10 月 1 日

我的 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};
  })
});

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

【问题讨论】:

  • 您应该在您的应用程序适配器中添加它 - 您可以使用 headers 哈希来执行此操作。

标签: ruby-on-rails ember.js


【解决方案1】:

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

#= require jquery-ujs

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

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

【讨论】:

  • 是的,app/assets/javascripts中的那个
猜你喜欢
  • 2017-07-15
  • 2015-07-24
  • 2014-06-16
  • 2012-05-08
  • 2023-03-26
  • 2016-09-17
  • 2012-12-11
  • 2019-07-15
  • 2014-07-04
相关资源
最近更新 更多