2013-12-20 55 views
2

我设置一个Rails应用4与Ember JS使用所提供的网站灰烬js和轨道4 CSRF

的Gemfile

gem 'ember-rails' 
gem 'ember-source', '1.2.0' 

entries_controller.js.coffee

Tut1.EntriesController = Ember.ArrayController.extend 

    addEntry: -> 
     entry = @store.createRecord(Tut1.Entry, 
     name: @get('newEntryName') 
     winner: false 
    ) 
    entry.save() 
上的宝石

我在控制台上得到这个错误。

POST http://localhost:3000/entries 422 (OK) 

它张贴正确的,但Rails是一个重新调整“的ActionController :: InvalidAuthenticityToken”这是困惑,我作为东道主,起源和引用者是相同的。

Host:localhost:3000 
Origin:http://localhost:3000 
Referer:http://localhost:3000/ 

它仍然是跨域吗?我如何验证此请求。

回答

2

它不是一个跨域请求,但是,在你的应用程序控制器代码:

protect_from_forgery with: :exception 

正试图防范CSRF攻击。当您发布表单时,它期待有效的CSRF令牌。有some more details here

解决此问题的简单方法是使用rails_csrf。它本质上是从您的服务器请求一个令牌,然后设置适当的头文件,以便使用正确的CSRF令牌进行请求。