Использование Angular CLI для обратного прокси к сервису в API Gateway / lambda - PullRequest
0 голосов
/ 11 апреля 2019

Я пытаюсь реверсировать прокси Angular, используя proxy.conf.json к лямбде за шлюзом API.

{
    "/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.

Если я нажму это сейчас, я получу несанкционированный

enter image description here

Однако, когда я явно добавляю заголовок хоста в почтальон, он работает.

enter image description here

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

"target": "http://asdasdfsdf.execute-api.ap-southeast-2.amazonaws.com" выполнял перенаправление на https:// .... Прокси-сервер уважал перенаправление, но не переадресовывал заголовки в конфигурации.

Решением было использование https напрямую.

0 голосов
/ 11 апреля 2019

Я использовал опцию bypass.

Чтобы использовать ее, мы должны изменить proxy.conf.json на proxy.conf.js.Убедитесь, что все ссылки на proxy.conf.json теперь указывают на proxy.conf.js (может быть, у вас есть это в angular.json, в options.proxyConfig или в 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;
...