ExpressJS: как перенаправить запрос POST с параметрами

Мне нужно перенаправить все POST-запросы моего сервера node.js на удаленный сервер.

Я попытался сделать следующее:

app.post('^*$', function(req, res) { res.redirect('http://remoteserver.com' + req.path); }); 

Перенаправление работает, но без параметров POST. Что мне следует изменить, чтобы сохранить параметры POST?

В HTTP 1.1 есть код состояния (307), который указывает, что запрос должен быть повторен с использованием того же метода и данных post.

307 Временная переадресация (с HTTP / 1.1). В этом случае запрос должен быть повторен с другим URI, но будущие запросы все еще могут использовать исходный URI. В отличие от 303, метод запроса не должен изменяться при повторной выдаче первоначального запроса. Например, запрос POST должен быть повторен с использованием другого запроса POST.

В express.js код состояния является первым параметром:

 res.redirect(307, 'http://remoteserver.com' + req.path); 

Подробнее об этом см . В статье packexchange .

проксирование

Если это не сработает, вы также можете отправлять запросы POST от имени пользователя с сервера на другой сервер. Но учтите, что это будет ваш сервер, который будет делать запросы, а не пользователь. Вы будете по существу проксировать запрос.

 var request = require('request'); // npm install request app.post('^*$', function(req, res) { request({ url: 'http://remoteserver.com' + req.path, headers: req.headers, body: req.body }, function(err, remoteResponse, remoteBody) { if (err) { return res.status(500).end('Error'); } res.writeHead(...); // copy all headers from remoteResponse res.end(remoteBody); }); }); 

Нормальное redirect:

 user -> server: GET / server -> user: Location: http://remote/ user -> remote: GET / remote -> user: 200 OK 

Сообщение “redirect”:

 user -> server: POST / server -> remote: POST / remote -> server: 200 OK server -> user: 200 OK 
  • Хотя цикл с обещаниями
  • Невозможно перезаписать модель после компиляции Mongoose
  • Определить корень проекта из запущенного приложения node.js
  • В какой области переменные модуля хранятся в node.js?
  • Как установить модуль node.js без использования npm?
  • npm не работает - "читать ECONNRESET"
  • Как вы извлекаете данные POST в Node.js?
  • Почему gulp.src не нравится передавать массив полных путей к файлам?
  • npm ошибки установки с ошибкой: ENOENT, chmod
  • Как настроить несколько поддоменов в Express.js или Connect.js
  • Неизвестные события в nodejs / v8 flashgraph с использованием perf_events
  • Давайте будем гением компьютера.