[英]How to properly deploy an Angular 2 app with a Java backend?
场景是这样的:我正在开发带有Angular 2前端的Java EE应用程序。 客户端有一个Apache服务器(通常用于提供静态资源)和一个Oracle Weblogic(用于动态部分)。 问题在于,默认情况下,由于相同的起源策略,Angular 2 App和Weblogic服务器将无法相互通信。
到目前为止,我想到了3种可能的部署方法:
在Apache中设置反向代理 ,以将REST端点指向Weblogic
将Angular App打包在WAR / EAR中,然后将其部署到Weblogic。 因此,我最终会遇到类似问题:用于UI的myserver / myapp和用于后端的myserver / myapp-rest。
在与Java后端相同的WAR中打包Angular App。 因此,最终我将获得用于UI的myserver / myapp和用于REST端点的myserver / myapp / api。
有第四个选项可以设置CORS,但是我担心使用该方法的安全性。
哪种方法正确?
如果允许您做出基础决策,请将apache webserver更改为nginx,我们切换到nginx并在并发处理方面获得了很多附加值。 在我们的项目中,角度客户端由nginx网络服务器提供服务,该网络服务器与托管在tomcat 8.x(我们的应用程序服务器)上的java后端进行通信,在应用程序服务器之后,还有几个层,一个单独的数据库服务器和一个弹性搜索服务器。
不必担心设置CORS,您最终将需要允许一些源于您的域和端口的源请求。
如果您的Java技术堆栈具有spring mvc,那么设置CORS只需添加几行配置即可。 您甚至可以对角度URL进行硬编码,以允许后端服务器仅处理来自角度URL的请求。 在普通的JavaEE世界中,CORS只是另一个过滤器或拦截器,您可以在其中设置具有所有允许的来源,http方法等的响应标头。很简单,您可以查找它。
对于您给定的选择
3与2相同。
根据我过去的经验,我强烈建议使用CORS选项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.