我的Ember应用程序在本地计算机上运行良好。我可以从另一台PC加载Ember页面,并使用浏览器(例如here)分别加载后端数据,但是Ember不能;它声明ERR_CONNECTION_REFUSED并且没有检索数据以填充列表/下拉列表等。
最初我在PUT消息上遇到了很多麻烦,即使是在本地也是如此,并且设置了一条CORS规则以尝试启用所有内容,但即使这样也没有在这里工作。
发生了什么?为什么Ember不能获得同一个浏览器在另一个标签中没有问题的数据?
答案 0 :(得分:1)
这不是Ember无法获取数据。它的浏览器不允许向其他域发送请求。但并非所有要求。一些“简单”(仅限于GET,HEAD和POST方法以及一小组允许的标头)请求可以正常工作。 MDN has a big article about CORS。为了解决这个问题,您的后端应该接受OPTIONS方法并在响应中包含以下标题:
Access-Control-Allow-Origin: http://frontend.domain
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: *
Access-Control-Max-Age: 86400
根据您用于后端开发的语言/框架,您可能会找到有助于管理CORS标头的库/插件/插件。我建议使用那些。
答案 1 :(得分:0)
噢,这对我来说很愚蠢...我开始的教程(让我能够路由到REST子路由)在127.0.0.1的application.js中有一个主机覆盖,这不起作用当然,来自非本地主机。
要检查一下:app / adapter / application.js是否有" host"的条目?它是什么?