【发布时间】:2020-10-15 15:54:23
【问题描述】:
我对 Camunda 很陌生,我想编写一个小型 Angular 程序,使用 REST 引擎控制已部署的 BPMN 流程。
到目前为止一切顺利,所以我从 Camunda 官方网站https://camunda.com/de/download/ 下载了开源社区平台。我还能够通过 start-camunda.bat 和在 localhost:8080 上初始化的 TomCat 启动一切。我的流程也已部署,我可以通过 Postman 进行 REST 调用来控制流程并获取信息。
所以通过 Postman 的 REST 调用有效!
现在我的问题。我的 Angular 应用程序在 localhost:4200 上运行在 ng serve 上,当然当我从应用程序发送 GET-Request http://localhost:8080/engine-rest/process-definition 时存在 CORS 问题。
this.http.get<any>('http://localhost:8080/engine-rest/process-definition')
.subscribe(x => console.log(x));
经过一些互联网研究,我找到了 2 个解决方案。您可以在 Angular 应用程序中设置代理:
解决方案 1 - 代理
src/proxy.conf.json
{
"/engine-rest": {
"target": "http://localhost:8080"
"secure": false,
"logLevel": "debug"
}
}
angular.json
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "angularTest:build",
"proxyConfig": "src/proxy.conf.json" <-- Add this line
},...
如果我随后执行 ng serve,它会告诉我 [HPM] Proxy created: /engine-rest -> http://localhost:8080,但是当我发送 Rest Call 时,它仍然会收到以下 CORS 错误。
解决方案 2 - TomCat web.xml
我尝试的第二个解决方案是在server\apache-tomcat-9.0.33\webapps\engine-rest\WEB-INF\web.xml 下的web.xml 顶部添加一个过滤器,然后重新启动服务器。
过滤器
<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
所以这两个 解决方案 都应该解决这个 CORS 错误,但在我的情况下,他们没有,我无法解释如何以及为什么。所以也许它只是超级简单,我只是愚蠢
【问题讨论】:
标签: angular rest tomcat cors camunda