我正在尝试开始使用Ember Data并立即遇到此问题,浏览器在实际请求之前发送了OPTIONS请求。
我正在尝试与之通信的开发后端是在我的本地计算机上运行的rails 4.2服务器(以rails s -b 0.0.0.0
开头)
我目前使用这个api从android和ios应用程序进行通信。我的最终目标是提供除现有rails UI之外的Ember应用程序,但如果我必须更换它并且只有Ember UI,那就没问题了。
我对CORS做了一些阅读,我认为至少要了解它的目的是什么。如果我理解正确,浏览器会将Ember应用程序看作是由服务器以外的服务器提供服务,因为这会询问服务器是否正常。
所以我的问题是:
当我导航到服务器URL时,我试图访问http://localhost:3000/api/v1/users
rails记录以下响应:
Started GET "/api/v1/users" for 127.0.0.1 at 2016-04-17 10:02:01 -0400
基于此,我认为我的Ember适配器设置正确:
import JSONAdapter from 'ember-data/adapters/json-api';
export default JSONAdapter.extend({
host: 'http://127.0.0.1:3000',
namespace: 'api/v1'
});
然后我用这个命令启动Ember服务器:
ember s --proxy http://127.0.0.1:3000
rails服务器正在接收以下请求:
Started OPTIONS "/api/v1/users" for 127.0.0.1 at 2016-04-17 09:36:51 -0400
哪个失败了,因为我没有这样的路线(并且我认为我也不想)。
答案 0 :(得分:2)
如果您使用--proxy
,则不应覆盖host
!
ember
应用应该向当前端点发出所有请求(可能是localhost:4200
),开发服务器会将请求重定向到后端。
如果你:
--proxy
请勿在适配器上设置host
,只是玩得开心。如果您设置host
,则ember会将数据直接发送到此host
,而不是发送到您的开发服务器,从而产生CORS
请求。