2017-07-21 43 views
0

我已经使用eirslett frontend-maven-plugin创建了一个maven web项目,它允许我自己安装node,node_modules,我已经为此创建了一个angular-cli项目,还有一个spring boot standalone应用程序,它我正在使用休息服务。如何使用maven eirslett前端插件从我的Angular-cli应用程序调用不同的api域(后端)?

如下我已经配置一个代理config.json &的package.json:

代理config.json

"/api": { 
    "target": "http://someipaddress:8080", 
    "secure": false 
} 

的package.json

... 

"start": "ng serve --proxy-config proxy.conf.json", 
... 

一切工作正常,当我只是做npm start通常会调用ng为dev env服务,它可以使用我后端api中的数据。

但是,当你做maven构建它运行部署ng构建时,似乎问题发生CORS,并且网络包将不会对待ng服务 - 代理配置代理。 conf.json,因为它没有运行任何生产服务器(通常是节点服务器),并且网络包不会将这些配置捆绑到任何捆绑包中。

您能帮我解决一个方法/任何额外的配置,我需要遵循这种情况。我如何让我的Frontend与后端API进行通信并使用其余的服务,这个WAR包含了所有捆绑的dist文件夹,这个文件夹将被部署在一个通常为tomcat的web服务器上?

如果你遇到过这个问题,你可以分享一下你是怎么想出这种情况的,任何资源/链接或者例子都可以帮助我解决这个问题。谢谢!

回答

0

proxy.conf.json专门用于开发目的,在生产中你不会运行ng serve或类似的东西。

进入生产时,您通常会执行构建脚本ng build --prod,这会在dist文件夹中创建一堆静态文件。这些文件应该部署到您的生产文件夹。

里面有你的应用程序,当由浏览器提供服务时,在相同的域(例如https://mysampleapp.com)下,前端文件以及后端API被提供。
意义调用像https://mysampleapp.comhttps://mysampleapp.com/index.html服务的静态文件和调用像https://mysampleapp.com/api/v1/people像调用后端API(您的应用程序清楚API的位置)的东西。

现在,如果你使用url https://mysampleapp.com和应用程序内部通常使这样/api/v1/people请求(没有指明一个完全合格的主机名等)加载应用程序,然后就可以工作得很好,不应该有任何问题CORS 。

你需要做的确切配置实际上取决于你正在使用的服务器(IIS,jBoss,Apache,Nginx)和部署策略(前端/后端的不同位置,比如某些Apache/Nginx的前端,转发到在IIS/jBoss/Node上运行的后端,...)。

因为很多人都有类似的问题和疑问(我只是没有足够的时间atm),所以我会写一些关于这方面的内容。来自NGConf的Dan Wahlin谈到这个话题有一个谈话。他使用Docker,但无论如何,从概念的角度来看,这适用于所有环境:https://www.youtube.com/watch?v=socWfhPJptE

相关问题