【发布时间】:2013-08-23 20:13:14
【问题描述】:
我正在构建一个单页应用程序(使用 AngularJS),该应用程序将来自它对遗留系统的 REST API 调用的数据呈现出来。这个遗留系统非常大,是用 Java 编写的,部署需要几分钟,所以我们决定开发完全独立于遗留系统的单页应用程序会更有效率。
一旦我们尝试与旧系统的 REST API 通信,就会出现问题。虽然这两个应用程序都在本地部署到同一主机,但它们部署在不同的应用程序服务器上,因此我需要在通信时使用不同的端口。但由于 SPA 正在与不同端口上的 REST API 通信,因此浏览器阻止了我的请求以防止 Cross Site Scripting 攻击。
我们发现这个构建工具名称 lineman(利用 grunt)可以轻松代理 http 请求。这让我们绕过了跨站点脚本限制,但这仅适用于开发模式。
现在我们已经获得了一个有效的概念证明,我们想知道我们应该如何在没有代理的情况下一起部署这些应用程序。我很难找到关于如何做到这一点的建议,因为 Angular 一开始并不假设你有一个后端,而且大多数在前端使用 Angular 的人并没有在后端使用 Java(如果这很重要的话) .
我们遇到了一些问题,例如,应用的上下文路径会根据它们是部署在 prod 模式还是 dev 模式而发生变化,因此我们必须想出巧妙的方法来避免在这两种模式下都有效的断开链接。我想知道我是否/在哪里走错了一步。我是否应该避免在与后端不同的服务器上开发 SPA?
【问题讨论】:
标签: java rest angularjs xss single-page-application