【问题标题】:Proxy tag not matching URL as intended代理标记与预期的 URL 不匹配
【发布时间】: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 中描述的多条目格式。

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

【问题讨论】:

    标签: angular proxy


    【解决方案1】:

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

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

    注意,我仍然不知道安全属性是指目标 URL 还是将被代理的传入 URL。如果我已经必须在目标属性中指定新的原点,我也不明白为什么会有 changeOrigin 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-30
      • 2018-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 2021-11-12
      相关资源
      最近更新 更多