2013-12-20 72 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令牌進行請求。