【发布时间】:2019-07-06 00:25:13
【问题描述】:
我有一个 Angular 应用程序试图通过 Tomcat 服务器连接到托管在 Java 应用程序中的 Web 服务。当页面加载时,它会尝试联系服务端点之一,最多只能获得 HTTP 404,其他时候服务调用会由于 CORS 限制而被阻止。
简而言之,我希望在 localhost:8090 上托管 Java 服务,该 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 的 sn-p 是:
"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'} ,
}
}
我不知道安全属性是指 URL 传入 URL 还是请求被代理到的 URL。 LogLevel 只提到我试图做一个代理,但它没有显示实际的请求和(错误)匹配。我假设 changeOrigin 可能总是正确的,所以我不确定是否需要指定。
这是用于本地非生产开发模式,服务器以
启动 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 中描述的多条目格式。
这是针对本地开发模式的,其中
【问题讨论】: