【问题标题】:Angular proxy path rewrite not working during http get request call?Angular 代理路径重写在 http get 请求调用期间不起作用?
【发布时间】:2019-02-27 19:16:08
【问题描述】:

我的代理配置不起作用,因为它没有按照重写配置重定向 下面是我的 proxy.config.json

{
    "/sap": {
        "target" : "http://server.domain.com:8002",
        "secure" : false,
        "pathRewrite": {
            "^/sap": ""
        },
        "changeOrigin": true,
        "logLevel": "debug"
    }

}

下面是我的 http 调用 this.http.get('/sap/opu/odata/sap/ABC_FD_SRV/ID_GEN_Set?sap-client=010', {headers}).pipe(map((response: any) => response));

用于 http 请求的标头

var headers = new Headers();
        headers.append('Content-Type', 'application/json');
        headers.append('Access-Control-Allow-Methods', 'POST, GET, OPTIONS, PUT');
        headers.append('Accept', 'application/json ');
        headers.append('X-Requested-With','XMLHttpRequest');

每当我使用ng serve --proxy-config proxy.config.json 启动并签入网络标签而不是http://server.domain.com:8002 时,它都会重定向到http://localhost:4200

我尝试过使用/sap/*,但没有用。谁能帮我解决这个问题,我正在努力调用 odata 链接来使用来自服务器的数据,所以我使用changeOrigin: true 解决跨源浏览器问题。

【问题讨论】:

    标签: angular proxy cross-browser odata


    【解决方案1】:

    如果您的意思是只在“网络”选项卡中看到 http://localhost:4200,没关系。在浏览器中,它显示为 4200。代理发生在您的主机服务器中。对您的来电有何回应?

    【讨论】:

    • 响应中为空
    • 如果您没有收到任何错误,我会假设您的请求找到了目的地。您已经将logLevel 设置为debug,这非常聪明。在您的控制台中,当您使用 ng serve 启动服务器时,您是否看到任何有关路径重写的日志?
    • 好的。因此,在您的网络选项卡中,您会看到 localhost:4200,因为这是您的 Angular 应用程序发送的内容。调用到达您的主机服务器,该服务器从您的proxy.config.json 中查找重写规则。它找到匹配的规则,进行重写并转发请求。如果您的重写不起作用,您应该会看到 404 响应代码。但是您说您没有收到任何错误,只有一个空响应(顺便说一句,响应代码是 200 吗?)。很明显它必须到达您的服务器,我假设您的响应实际上是空的,因为服务器没有返回任何内容。
    猜你喜欢
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-19
    相关资源
    最近更新 更多