解决Rails后端的CORS Ember错误

时间:2017-01-02 07:57:15

标签: ruby-on-rails ember.js cors

使用Rails REST API构建前端界面,我收到错误

XMLHttpRequest cannot load http://www.example.com/questions
No 'Access-Control-Allow-Origin' header is present on the requested 
resource. Origin 'http://localhost:4200' is therefore not allowed access.

我已将我的适配器设置为

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  namespace: 'api/v1',
  host: 'http://www.example.com'
});

如果我正在构建API,我只需要包含gem'chack-cors'并允许访问其他站点,但这不包含在源代码中。我刚开始使用Ember框架,还没有为此找到解决方法。

我尝试过运行代理服务器

ember s --proxy http://www.example.com

但我得到同样的回应。是否有一个中间件或RESTAdapter上的方法可以用来绕过这个错误?

1 个答案:

答案 0 :(得分:0)

根据the docs,您正在服务器上正确创建代理服务器。通过这样做,您的远程呼叫将通过您的代理服务器转到“http://www.example.com”。

但是,您没有使用此代理服务器。您将远程呼叫直接发送到“http://www.example.com”。由于适配器的host参数:

import DS from 'ember-data';

export default DS.RESTAdapter.extend({
  namespace: 'api/v1',
  host: 'http://www.example.com'
});

更改host参数并将远程调用发送到代理服务器。 (您的代理服务器位于http://localhost:4200