Настройка прокси промежуточного программного обеспечения в экспресс-приложении - PullRequest
0 голосов
/ 11 ноября 2019

Мое приложение состоит из внешнего сервера (React, служат в качестве статического) и внутреннего сервера (Express). Я обнаружил, что всякий раз, когда я отправляю запросы с пользовательскими заголовками, отправляется предварительный запрос. Это увеличивает задержку моего приложения. Я хотел бы избежать этих предварительных запросов.

Например,

frontend: example.web.com

backend: example.api.com

Один из найденных подходов заключается в настройке промежуточного программного обеспечения прокси в моем бэкэнде так, чтобы запросы от бэкэнд-сервера отправлялись на бэкэнд-сервер вместо внешнего интерфейса (браузера) на бэкэнд.

const proxy = require('http-proxy-middleware');
const express = require('express');
const cors = require('cors');

const app = express();
app.use(cors({
    origin: "*",
    methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
    allowedHeaders: "authorization",
}));
let options = {
    target: 'http://localhost:5001/',
    changeOrigin: true,
    logLevel: 'debug',
    onError: function onError(err, req, res) {
        console.log('Something went wrong with the proxy middleware.', err)
        res.end();
    }
};
app.use("/", proxy(options), indexRouter);

Что я ожидал, чтобы избежать предварительных запросов приотправка не «простых» запросов. Я знал, что подход промежуточного ПО через прокси-сервер может избежать предварительных запросов, но я не знаю, как правильно настроить приложение Express.

1 Ответ

0 голосов
/ 11 ноября 2019

http-proxy-middleware отправит вам ответы, полученные от целевого сервера API. однако он не переходит к следующему промежуточному программному обеспечению.

app.use("/", proxy(options)) означает, что любой запрос к вашему серверу будет перенаправлен на целевой API: запрос на yourserver.com/items будет перенаправлен на targetapi.com/items. Если вы хотите иметь собственные маршруты, используйте префикс для промежуточного программного обеспечения (app.use("/api", proxy(options))) или подключите другие промежуточные программы до прокси.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...