【问题标题】:How to properly deploy an Angular 2 app with a Java backend?如何正确部署带有 Java 后端的 Angular 2 应用程序?
【发布时间】:2017-08-05 08:08:43
【问题描述】:

场景是这样的:我正在开发一个带有 Angular 2 前端的 Java EE 应用程序。客户端有一个通常用于提供静态资源的 Apache 服务器和一个用于动态部分的 Oracle Weblogic。问题是默认情况下,Angular 2 App 和 Weblogic 服务器由于同源策略而无法相互通信。

到目前为止,我想到了 3 种可能的部署方法:

  1. 在 Apache 中设置 Reverse Proxy 以将 REST 端点指向 Weblogic

  2. 将 Angular 应用程序打包到 WAR/EAR 中并将其部署到 Weblogic。所以我最终会得到类似:用户界面的 myserver/myapp 和后端的 myserver/myapp-rest。

  3. 将 Angular 应用程序打包在与 Java 后端相同的 WAR 中。所以我最终会使用 myserver/myapp 作为 UI 和 myserver/myapp/api 作为 REST 端点。

还有第四个选项是设置 CORS,但我担心使用这种方法的安全性。

哪种方法是正确的?

【问题讨论】:

    标签: java apache angular rest weblogic12c


    【解决方案1】:

    如果允许您进行基础设施决策,将 apache webserver 更改为 nginx ,我们切换到 nginx 并在并发处理方面获得了很多附加值。 在我们的项目中,Angular 客户端由 nginx 网络服务器提供服务,该服务器与托管在 tomcat 8.x(我们的应用服务器)上的 java 后端进行通信,在应用服务器之后还有几层,一个单独的数据库服务器和一个弹性搜索服务器。

    不要害怕设置 CORS,您最终将需要允许一些并非源自您的域和端口的来源请求。

    如果你的 java 技术栈有 spring mvc ,那么设置 CORS 只是添加几行配置的问题。您甚至可以硬编码您的 Angular 网址,以允许后端服务器仅处理来自您的 Angular 网址的请求。 在普通的 JavaEE 世界中,CORS 只是另一个过滤器或拦截器,您可以在其中设置包含所有允许的来源、http 方法等的响应标头。查找起来非常简单。

    供您选择

      1. 似乎是合理的,并且您获得的附加值是您可以 将 SSL 加密委托给代理服务器。
      1. 似乎很奇怪,您可能希望将静态内容服务器与动态内容服务器、您的 Angular js 捆绑包、资产分开 等大多是静态的,如果你把你的静态服务器分开,那么 您可以配置无 cookie 域 服务更快。
    • 3 与 2 相同。

    根据我过去的经验,我强烈建议使用 CORS 选项。

    【讨论】:

    • 所以,CORS 是要走的路。与我描述的其他方法相比,有什么优势吗?
    猜你喜欢
    • 2017-04-15
    • 1970-01-01
    • 2017-11-16
    • 2017-07-04
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 2017-01-29
    • 1970-01-01
    相关资源
    最近更新 更多