У меня есть приложение Angular, пытающееся подключиться к веб-службе, размещенной в приложении Java, через сервер Tomcat.Когда страница загружается, она пытается связаться с одной из конечных точек службы и в лучшем случае получает HTTP 404, в других случаях вызов службы блокируется из-за ограничений CORS.
Короче говоря, я хочу иметь службы Javaразмещенный на localhost: 8090, доступный для этого приложения Angular.Пример службы:
http://localhost:8090/sc-reporting/ldap
Я считаю, что службы Java работают, но даже не могут получить доступ к ним с помощью кода, управляемого Angular.
ЛокальныйФайл окружения:
export const environment = {
production: false,
baseUrl: 'http://localhost:8090/proxy'
};
Файл базового окружения:
export const environment = {
production: false,
baseUrl: 'http://localhost:8090/proxy'
};
Вызов службы, вызывающей службу:
return this.http.post(environment.baseUrl + '/ldap/getUserProfile', '{"user_id":\"'+userid+'\"}', httpOptions);
Фрагмент angular.jsonс информацией прокси:
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "admin-tool:build"
},
"configurations": {
"prod": {
"browserTarget": "admin-tool:build:prod"
},
"dev": {
"browserTarget": "admin-tool:build:dev",
"proxyConfig": "dev-proxy-config.json"
},
"stage": {
"browserTarget": "admin-tool:build:stage"
},
"local": {
"browserTarget": "admin-tool:build:local",
"proxyConfig": "local-proxy-config.json"
}
}
Наконец, файл конфигурации прокси local-proxy-config.json:
{
"/proxy/*": {
"target": 'http://localhost:8090'
"secure": false,
"logLevel": "debug",
"changeOrigin": true,
"pathRewrite": {'/proxy': '/sc-reporting'} ,
}
}
Я не знаю, ссылается ли свойство secure на URLвходящий URL-адрес или URL-адрес, на который направляется запрос.LogLevel только упоминает, что я пытался сделать прокси, но он не показывает фактические запросы и (не) совпадения.Я предполагаю, что changeOrigin, скорее всего, всегда будет true, поэтому я не уверен, что это нужно указывать.
Это для локального непроизводственного режима разработки, где сервер запускается с
ng serve --configuration=local
После запуска консоль Angular показывает:
$ ng serve --configuration=local
Your global Angular CLI version (8.0.2) is greater than your local
version (7.3.8). The local Angular CLI version is used.
To disable this warning use "ng config -g cli.warnings.versionMismatch false".
[HPM] Proxy created: / -> http://localhost:8090
[HPM] Subscribed to http-proxy events: [ 'error', 'close' ]
** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
Date: 2019-07-03T16:44:24.017Z
Hash: a6444379feddc404c22b
Time: 113614ms
chunk {0} 0.fa0122fa52d24925d111.js, 0.fa0122fa52d24925d111.js.map () 215 kB [rendered]
chunk {main} main.2dd6a44d76e8b77fa0a8.js, main.2dd6a44d76e8b77fa0a8.js.map (main) 8.25 MB [initial] [rendered]
chunk {polyfills} polyfills.0311b8e71410fdde5f64.js, polyfills.0311b8e71410fdde5f64.js.map (polyfills) 158 kB [initial] [rendered]
chunk {runtime} runtime.1bb23cf2a48df72b603f.js, runtime.1bb23cf2a48df72b603f.js.map (runtime) 8.8 kB [entry] [rendered]
chunk {scripts} scripts.00f56f46ef424e79bc34.js, scripts.00f56f46ef424e79bc34.js.map (scripts) 703 kB [entry] [rendered]
chunk {styles} styles.d833da89befc273a6b3b.css, styles.d833da89befc273a6b3b.css.map (styles) 789 kB [initial] [rendered]
i 「wdm」: Compiled successfully.
Я попытался использовать подход, обозначенный https://medium.com/better-programming/setup-a-proxy-for-api-calls-for-your-angular-cli-app-6566c02a8c4d,, который, как мне кажется, не имеет встроенной поддержки прокси для Angular.Я также попробовал формат множественной записи, описанный в https://github.com/angular/angular-cli/wiki/stories-proxy#multiple-entries.
Это для локального режима разработки, где