如何在Java后端正确部署Angular 2应用程序?

问题描述:

这种情况是这样的:我正在开发一个Angular 2前端的Java EE应用程序。客户端有一个通常用于服务静态资源的Apache服务器和一个用于动态部分的Oracle Weblogic。问题在于默认情况下,由于同源策略,Angular 2应用程序和Weblogic服务器将无法相互通话。如何在Java后端正确部署Angular 2应用程序?

到目前为止,我有3个可能的部署记方法:

  1. 成立于Apache的一个Reverse Proxy的REST端点指向到Weblogic

  2. 包装的角应用在WAR/EAR和将其部署到Weblogic。所以我最终会得到类似于:用于UI的myserver/myapp和用于后端的myserver/myapp-rest。

  3. 将Angular应用程序打包成与Java后端相同的WAR。所以我最终将使用myserver作为用户界面,myserver/myapp/api作为REST终端。

有第四个选项将设置CORS,但我担心使用该方法的安全性。

哪种方法是正确的?

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

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

如果你的java技术栈有spring mvc,那么设置CORS只是增加几行配置而已。您甚至可以硬编码您的角度网址,以允许后端服务器仅通过角度网址提供请求。 在普通的JavaEE世界中,CORS只是另一个过滤器或拦截器,您可以在其中设置所有允许的来源,http方法等的响应头。这很简单,您可以查看它。

了给定的选择

    1. 似乎是合理和附加值,你得到的是你可以 代表SSL加密代理服务器。
    1. 开始=“2”>
    2. 似乎很奇怪,你会想从动态内容服务器的静态内容服务器,您的角度JS包,资产 等大多是静态的分开,如果你把你的静态服务器分开,然后 您可以配置无cookie的域,使 的服务速度更快。
    3. 3与2相同。

    我强烈建议CORS选项,从我过去的经验。

    +0

    所以,CORS是要走的路。与我描述的其他方法相比,是否有任何优势? – lordscales91

    +0

    编辑我的答案 – TruckDriver