Я новичок в Camunda и хотел написать небольшую программу на Angular, которая управляет развернутым процессом BPMN с помощью движка REST.
Пока все хорошо, поэтому я загрузил платформу сообщества с открытым исходным кодом с официального сайта Camunda https://camunda.com/de/download/
. Я также смог запустить все через start-camunda.bat и TomCat, инициализированный на localhost:8080
. Мой процесс также развернут, и я могу отправлять вызовы REST через Postman, чтобы контролировать процесс и получать информацию.
Так что REST-вызовы через Postman работают!
Теперь о моей проблеме. Мое приложение Angular работает ng serve
на localhost:4200
, и, конечно, возникают проблемы с CORS, когда я отправляю GET-запрос http://localhost:8080/engine-rest/process-definition
из приложения.
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, он все равно получит следующую ошибку CORS.
Решение 2 - TomCat web.xml
Второе решение, которое я попробовал, заключалось в том, чтобы добавить фильтр вверху web.xml
под server\apache-tomcat-9.0.33\webapps\engine-rest\WEB-INF\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, но в моем случае это не так, и я не могу объяснить, как и почему. Так что, может быть, это просто супер, и я просто дурак