如何使用maven eirslett前端插件从我的Angular-cli应用程序调用不同的api域(后端)?

时间:2017-07-21 10:38:22

标签: angular spring-boot cors http-proxy

我使用eirslett frontend-maven-plugin创建了一个maven web项目, 它允许我自己安装node,node_modules,我已经创建了一个angular-cli项目,还有一个Spring Boot独立应用程序,我用它来使用休息服务。

我已配置了proxy-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 (通常为Dev env调用 ng serve )时,一切正常,它可以使用我后端api中的数据。

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

请您帮我解决一下这种情况需要遵循的方法/任何其他配置。我怎样才能让我的前端与Backend API进行通信并使用其余的服务,包含将部署在Web服务器中的所有捆绑的dist文件夹的WAR通常是tomcat?

如果您遇到过这个问题,可以分享一下您如何理解这个场景,任何资源/链接或示例都可以帮助我解决这个问题。谢谢!

1 个答案:

答案 0 :(得分:0)

text = "[[procedural programming|procedural programming languages]] [meow|woof]" new_text = specail_replace(text, lambda x: x.replace("[[", "").replace("]]","").split("|")[1]) >>> procedural programming languages [meow|woof] 仅用于开发目的,在制作中,您将无法运行proxy.conf.json或类似的内容。

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

里面有你的应用程序,当浏览器提供服务时,在同一个域(比如https://mysampleapp.com)下,前端文件以及后端API正在服务。
调用https://mysampleapp.comhttps://mysampleapp.com/index.html之类的内容的意思是提供静态文件,调用https://mysampleapp.com/api/v1/people之类的内容会调用后端API(应用程序中API的位置)。

现在,如果您使用网址https://mysampleapp.com加载应用,内部应用通常会发出类似dist的请求(不指示完全限定的主机名等),那么一切都应该正常工作不应该是任何CORS问题。

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

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