Ответ 1
В HTTP 1.1 есть код состояния (307), который указывает, что запрос должен быть повторен с использованием того же метода и данных post.
307 Временная переадресация (с HTTP/1.1). В этом случае запрос должен быть повторен с другим URI, но будущие запросы все равно могут использовать исходный URI. В отличие от 303, метод запроса не должен изменяться при повторной выдаче первоначального запроса. Например, запрос POST должен быть повторен с использованием другого запроса POST.
В express.js код состояния является первым параметром:
res.redirect(307, 'http://remoteserver.com' + req.path);
Подробнее об этом читайте в programers stackexchange.
проксирование
Если это не сработает, вы также можете делать запросы 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);
});
});
Нормальное перенаправление:
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