Как я могу передать проксированный ответ, если «selfHandleResponse» имеет значение true?

Я запускаю прокси-сервер разработки, где при запуске я делаю запрос на токен аутентификации с нашей кластерной архитектурой.

Однако срок действия этого токена истекает через некоторое время. Затем вместо того, чтобы разработчик перезапускал свой прокси-сервер, я хотел бы сделать еще один запрос, чтобы получить другой действительный токен аутентификации. Чтобы иметь возможность обрабатывать ответ самостоятельно, я установил для параметра node-http-proxyselfHandleResponse значение true.

app.use(
  '/',
  index({
    target: config.hostname,
    changeOrigin: true,
    onProxyReq,
    onProxyRes,
    selfHandleResponse: true
  })
);

Теперь я хочу обрабатывать ответы только с 401, потому что это единственный случай, когда мне нужно запросить другой токен.

const onProxyRes = (proxyRes, req, res) => {
  if (proxyRes.statusCode === 401) {
    getToken()
      .then(forwardRequest(req))
      .then((response) => {
        res.send(response.body);
      })
      .catch(() => {        
        res.sendStatus(500);
      });
  }

  // How to pass back the original proxyRes including body, headers etc.?
});

Обновлено: forwardRequest - это моя функция, чтобы повторить исходный запрос, а затем передать его клиенту в случае успеха.

Мои проблемы начинаются здесь, так как я понятия не имею, как передать проксированный запрос не-401 обратно клиенту. Я обнаружил, что начинаю реализовывать логику синтаксического анализа тела в зависимости от типа содержимого заголовка, но я очень надеюсь, что есть более простой способ.

Есть идеи?

Не могли бы вы поделиться, как выглядит ваша функция forwardRequest? Может облегчить людям, спотыкающимся о ту же проблему.

Gigi 18.03.2021 10:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
1 575
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение простое...

proxyRes.pipe(res);

Найдено в исходном коде node-http-proxy.

Другие вопросы по теме