【发布时间】:2017-01-03 20:47:51
【问题描述】:
使用 OS X Sierra
我有一个包含两个部分的 Rails 应用程序:前端和后端。 在后端,我使用的是 rails 4。 在前端,我使用的是 Angular。 每当我必须在本地启动服务器(用于开发或测试)时,我都会使用 3 个不同的控制台窗口。
一个运行grunt watch"
另一个运行http-server ./build/ -p 8000 -c-1
最后一个运行rails server
我的本地后端存储库只是生产中运行的内容的克隆。(减去服务器配置)
当我使用前端连接到我的远程服务器时,它可以正常工作。但是,当我在本地运行后端并尝试登录时,我得到的只是以下日志,并且没有响应:
=> Booting WEBrick
=> Rails 4.2.7 application starting in development on http://localhost:3000
=> Run `rails server -h` for more startup options
=> Ctrl-C to shutdown server
[2017-01-02 16:19:21] INFO WEBrick 1.3.1
[2017-01-02 16:19:21] INFO ruby 2.3.3 (2016-11-21) [x86_64-darwin15]
[2017-01-02 16:19:21] INFO WEBrick::HTTPServer#start: pid=10496 port=3000
前端抛出如下错误:
XMLHttpRequest 无法加载 localhost:3000/auth_user? 电子邮件=admin@railsapp.com&密码=VVVVVVVV。跨源请求是 仅支持 HTTP。
我的 Angular 端点文件
angular.module( 'common.config', [] )
.factory('endpoints', function() {
var host = 'development';
if (['live.companysite.com'].indexOf(window.location.host) > -1) {
host = 'production';
} else if (['companysite.com'].indexOf(window.location.host) > -1) {
host = 'development';
} else {
host = 'local';
}
var endpoints = {
'production': {
root: 'http://live.companysite.com/'
},
'development': {
root: 'http://companysite.com/'
},
'local': {
root: 'localhost:3000/'
}
};
return endpoints[host];
});
我知道这应该是 CORS 问题,但由于它与两个远程服务器(生产和测试)完美配合,我相信我的本地配置可能是问题所在。
【问题讨论】:
-
'localhost:3000auth_user?emai' 我认为您在 auth_user 之前和之后缺少 /
-
@HugoFarji 修复了这个问题,但仍然出现同样的错误
-
@HugoFarji 原来我必须在端点前加上“http://”。不要现在我怎么错过了这一切。谢谢!现在我有:'local': { root: "http:// localhost:3000/" } 你能把它添加为答案以便我接受吗?
标签: ruby-on-rails angularjs ruby