允许与 Yeoman (1.0) grunt 服务器进行跨域调用

问题描述 投票:0回答:2

我一直在使用 Yeoman 0.9,直到昨天我决定在 OS X 上使用 beta 1.0 版本。我使用 Yeoman 开发一个 Angular 应用程序。

随着我的应用程序的 Yeoman 0.9-->1.0 迁移完成并开始工作,我现在热衷于扩展由 yeoman grunt server 启动的开发服务器,以允许我对开发的 API 进行跨域调用由另一个团队托管在另一台服务器上,他们已经允许跨域调用。到目前为止,我们一直在使用 angular.js 提供的假 http 后端。

--旁白--

如果有人正在阅读本文寻找快速解决方案,我们可以通过在带有 Chrome 的 OS X 上使用此方法从命令行将 --disable-web-security 选项传递给 Chrome 来实现跨域调用,但它会关闭所有 Chrome 的安全性(反对),而且我们无论如何也无法让 Chrome 作为新实例启动。

--先到一边--

通过一些挖掘,我发现this Stack Overflow post(通过this post的答案)让我很好地了解了我需要做什么才能获得grunt服务器允许跨域调用。 它本质上涉及添加一个中间件组件来连接以允许更改标头,以便将“Access-Control-Allow-Origin”设置为“*”或任何喜欢的内容。

对 Node.js 一无所知,我可以看到帖子中提到的更改需要在 Yeoman 创建的许多文件中的某个位置进行,但是在哪里?我在 Yeoman 设置的“node_modules”目录中对“app.configure”和“connect.listen”进行了一些原始字符串搜索,但我得到了一些结果,其中大部分来自与模块捆绑在一起的示例我不清楚我应该编辑哪个。

如果有帮助,这里是我的 Angular 应用程序的目录结构快照:

Screenshot of directory structure

如果有人能给我一些关于在哪里可以进行这些更改的指示,我将非常感激!

node.js angularjs gruntjs yeoman
2个回答
2
投票

使用此 github 拉取请求中的方法解决了节点混乱的问题:http://github.com/angular/angular.js/pull/1454


1
投票

您可以使用 Apache 代理并使用 gruntjs(angular.js) 连接 REST 服务器。

Apache 会这样做:

  • 代理 / -> gruntjs
  • 代理/服务 -> REST 服务器

您将使用您的应用程序访问 Apache,而 angular.js 应用程序会认为这是在与自身对话,因此不存在跨域问题。

这里有一个关于如何设置的很棒的教程:http://alfrescoblog.com/2014/06/14/angular-js-activiti-webapp-with-activiti-rest/

© www.soinside.com 2019 - 2024. All rights reserved.