【发布时间】:2015-02-24 19:24:07
【问题描述】:
我正在开发一个带有 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 堆栈。
我已经搜索和阅读了大约一个小时,但还没有找到任何我可以理解的适用于我的情况的东西。我可能不知道最好的搜索词。
感谢您的帮助!
【问题讨论】:
-
一种简单的方法是从相同的域/端口静态地为您的 Angular 应用程序的 index.html 提供服务,即
http://localhost:3000 -
感谢@NewDev - 但我不确定这是否可能?请参阅stackoverflow.com/questions/1694144/…。我尝试将 BrowserSync 配置为使用端口 3000,但它似乎很聪明地意识到该端口已被占用(被 Rails 应用程序占用),并且它会自动移动到下一个可用端口 3001。如果您是,请告诉我知道我想念的一种方法。
-
我的意思是将其作为 Rails 应用程序中的静态文件提供 - (2) 在下面的答案中。
标签: ruby-on-rails angularjs localhost cors browser-sync