如何从运行在不同端口上的本地AngularJS应用程序向本地Rails应用程序发出请求?

我正在开发一个带有AngularJS前端和Rails后端的Web应用程序。

我的目标是保持两者完全分离,因为Rails应用程序最终将降级为简单的REST服务器,而AngularJS前端将只是使用后端的几个不同客户端之一。 出于这个原因,我不想将前端集成到Rails资产管道或类似的管道中。

Rails应用程序在端口3000上本地运行。前端使用Gulp编译静态资产,而BrowserSync包含我在端口3001上运行的开发服务器。

出于开发目的,我如何让AngularJS应用程序与Rails服务器通信,避免在通过Angular的$ http服务发出HTTP请求时出现此浏览器错误(我预期)?

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3001' is therefore not allowed access. 

我只需要在Rails应用程序中设置CORS吗? 还有另一种方式 – 也许某种本地主机文件技巧(我在Mac,FWIW)或类似? 我问,因为我的同事负责Rails应用程序(我对Rails的经验有限)但是已经离开了一段时间; 我的知识主要限于我设置的AngularJS堆栈。

我已经搜索并阅读了大约一个小时,但还没有找到任何我能理解的适用于我的情况的东西。 我可能不知道最好的搜索字词。

谢谢你的帮助!

啊,很棒。 以下是一些解决方案:

  1. 建立CORS,这不应该太难。 您所要做的就是将标题添加到服务于静态内容的页面(而不是rails REST端点),这个问题是除非您有充分的理由,否则您不应该这样做(请参阅3)。 你是如何提供静态内容的? 如果它是一个流行的工具,应该有插件为你做标题
  2. 现在从rails后端提供angularJS页面(使用某种静态路由)
  3. 如果您正在考虑生产并希望将其整理好,请使用nginx将这两种服务代理到一个域中, http://nginx.org/en/docs/beginners_guide.html