首页 > 解决方案 > 使用 Angular CLI 反向代理 API Gateway/lambda 中的服务

问题描述

我正在尝试使用proxy.conf.jsonAPI 网关后面的 lambda 反向代理 Angular。

{
    "/api/profile/*": {
        "target": "http://asdasdfsdf.execute-api.ap-southeast-2.amazonaws.com",
        "secure": false,
        "logLevel": "debug",
        "changeOrigin": false,
        "headers": {
            "host":"asdasdfsdf.execute-api.ap-southeast-2.amazonaws.com"
        },
        "pathRewrite": {
            "^/api/profile": "/dev/profile"
        }
    },
}

host我认为标题有问题。

如果我现在打这个,我会得到未经授权的

在此处输入图像描述

但是,当我在邮递员中明确添加主机标头时,它可以工作。

在此处输入图像描述

标签: node.jsangularwebpack-dev-server

解决方案


我使用了该bypass选项。

要使用它,我们必须将 更改proxy.conf.jsonproxy.conf.js。检查所有proxy.conf.json指向 now的引用proxy.conf.js(也许你有它 in angular.json、 inoptions.proxyConfig或 in package.json)。

在此之后,我们添加代码以添加绕过选项(在proxy.conf.js它的结尾看起来像这样:

const PROXY_CONFIG =
{
    "/api/profile/*": {
        target: "http://asdasdfsdf.execute-api.ap-southeast-2.amazonaws.com",
        secure: false,
        logLevel: "debug",
        changeOrigin: false,
        bypass: function (req, res, proxyOptions) {
            req.headers["host"] = "asdasdfsdf.execute-api.ap-southeast-2.amazonaws.com";
        },
        pathRewrite: {
            "^/api/profile": "/dev/profile"
        }
    },
};

module.exports = PROXY_CONFIG;

推荐阅读