代理标签与预期不匹配URL



我有一个Angular应用程序,可以通过Tomcat服务器连接到Java应用中托管的Web服务。当页面加载时,它试图联系一个服务端点之一,充其量是获得HTTP 404,而其他时候,由于CORS限制,服务呼叫被阻止。

简而言之,我想在Localhost:8090托管Java服务,可以通过此Angular App访问。一个示例服务是:

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"
                        }
                    }

最后,代理配置文件本地proxy-config.json是

{
    "/proxy/*": {
        "target": 'http://localhost:8090'
        "secure": false,
        "logLevel": "debug",
        "changeOrigin": true,
        "pathRewrite": {'/proxy': '/sc-reporting'} ,
    }
}

我不知道安全属性是指向代理请求的URL输入URL还是URL。Loglevel只提到我尝试执行代理,但它没有显示实际的请求和(MIS(匹配。我认为Transoorigin可能永远是正确的,因此我不确定是否需要指定。

这是针对本地非生产开发模式的,其中服务器以

启动
  ng serve --configuration=local

启动后,角控制台显示:

$ 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-your-angular-cli-cli-6566c02a8c4d上概述的方法,我相信开箱即用代理Angular。我还尝试了在https://github.com/angular/angular-cli/wiki/stories-proxy#multiple-entries。

这是针对本地开发模式的,其中

我通过将代理配置文件更改为

来解决问题
{
    "/proxy/*": {
        "target": "http://localhost:8090/ROOT/",
        "secure": false,
        "logLevel": "debug",
        "changeOrigin": true,
        "pathRewrite": { "^/proxy": "" }
    }
}

注意,我仍然不知道安全属性是指目标URL还是将要代理的输入URL。我也不明白为什么如果我已经必须在目标属性中指定新来源,为什么会有变换属性。

最新更新