java - 部署依赖于 REST API 的单页面应用程序有哪些技术?

标签 java rest angularjs xss single-page-application

我正在构建一个单页应用程序(使用 AngularJS),该应用程序将其对遗留系统进行的 REST API 调用中的数据呈现出来。这个遗留系统非常大,用 Java 编写,需要几分钟的时间来部署,因此我们决定开发与遗留系统完全分离的单页应用程序会更加高效。

当我们尝试与旧系统的 REST API 进行通信时,问题就出现了。虽然这两个应用程序都部署在本地同一主机上,但它们部署在不同的应用程序服务器上,因此我在通信时需要使用不同的端口。但由于 SPA 正在与不同端口上的 REST API 进行通信,因此浏览器阻止了我的请求以防止 Cross Site Scripting攻击。

我们发现这个构建工具名称lineman (利用 grunt)使得代理 http 请求变得很容易。这让我们绕过了跨站点脚本限制,但这仅适用于开发模式。

现在我们已经有了一个有效的概念验证,我们想知道如何在没有代理的情况下将这些应用程序一起部署。我很难找到如何做到这一点的建议,因为 Angular 并不假设你首先有后端,而且大多数在前端使用 Angular 的人都不会在后端使用 Java(如果这很重要的话) .

我们遇到了这样的问题,应用程序的上下文路径会根据它们是否部署在生产模式与开发模式下而变化,因此我们必须想出聪明的方法来避免适用于两种模式的损坏链接。我想知道我一路走来是否/在哪里迈出了错误的一步。我是否应该避免在与后端不同的服务器上开发 SPA?

最佳答案

我们有同样的问题。 URL 情况是,由于您处于不同的环境中,您的 java REST API 将具有不同的 URL 路径。

为了使这些路径向下级联到 Angular 应用程序,我们必须首先将 Web 应用程序(生成 Angular 的应用程序)中的基本路径外部化,以使用部署期间根据部署位置设置的值。我们的应用程序服务器中的值链接到配置文件中的 XML 值,然后我们在应用程序中引用这些值。

然后,我们创建从 Angular 应用程序到生成它的 Web 应用程序(不是 Java REST API)的调用,该调用将返回适合环境的 URL。

在 Angular 应用程序中,我们可以使用正确的基本路径设置资源(URL 的其余部分应在不同环境中保持相同)。

如果您可以通过外部化环境设置使第一部分正常工作,那么其余部分并不困难。

关于java - 部署依赖于 REST API 的单页面应用程序有哪些技术?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18411078/

相关文章:

java - 如何在 Spring Data 中漂亮地更新 JPA 实体?

java - Kotlin 和 Java 中带有嵌套类的泛型

java - Spring Boot 使用调度程序关闭

java - 如何在有状态操作的情况下定义幂等行为?

java - Android - 为开始日期和结束日期多次更新 DatePickers 的 minDate 和 maxDate

java - 反序列化 JSON 请求中包含许多对象的列表期间的性能问题

java - REST API 中查询参数可以是强制的吗

javascript - ionic 在某些 div 元素上滑动回来,而不是带动画的 ionic View

javascript - 基于数组验证输入

javascript - 在 AngularJS 中的 Controller 之前加载用户上下文