0

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

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

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

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

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 堆栈。

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

谢谢你的帮助!

4

1 回答 1

1

啊,太好了。以下是一些解决方案:

  1. 设置 CORS,这应该不会太难。您所要做的就是将标题添加到为您的静态内容提供服务的页面(而不是 rails REST 端点),这样做的问题是您不应该真正这样做,除非您有充分的理由(请参阅 3)。您如何提供静态内容?如果它是一个流行的工具,应该有插件为你做标题
  2. 现在从 rails 后端提供 angularJS 页面(使用某种静态路由)
  3. 如果您正在考虑生产并想彻底解决这个问题,请使用 nginx 将这两个服务代理到一个域中,http://nginx.org/en/docs/beginners_guide.html
于 2014-12-28T08:36:19.103 回答