Как запросить запрос на Nodejs Proxy Server? - PullRequest
0 голосов
/ 26 октября 2018

У меня есть прокси-сервер Nodejs, подобный этому:

`var http = require('http'),
httpProxy = require('http-proxy');

var proxy = httpProxy.createProxyServer({});

proxy.on('proxyReq', function(proxyReq, req, res, options) {
  proxyReq.setHeader('X-Special-Proxy-Header', 'foobar');
});

var server = http.createServer(function(req, res) {
    console.log(req.body);
  proxy.web(req, res, {
    target: 'http://localhost:3000'
  });
 });

console.log("listening on port 9000")
server.listen(9000);`

Я хочу получить req.body на прокси-сервере, когда я отправляю запрос на сервер Origin, пройдите прокси-сервер.Я использовал "console.log (req.body);"как на прокси-сервере, так и на исходном сервере.Я получаю объект body {"id": "user003"} на исходном сервере, но не определен на прокси-сервере.Итак, как я могу получить req.body на прокси-сервере?

1 Ответ

0 голосов
/ 26 октября 2018

Я подозреваю, что проблема здесь в том, что у вас нет парсера тела на прокси-сервере, но у вас он есть на вашем источнике.

req.body само не устанавливается узлом. Вместо этого вы должны обрабатывать события, генерируемые потоком req:

let body = '';
req.on('data', (data) => {
    // data is a buffer so need toString()
    body += data.toString();
});

req.on('end', () => {
    // at this point you'll have the full body
    console.log(body);
});

Вы можете сделать это проще с помощью анализатора тела (например, https://www.npmjs.com/package/body-parser), но, поскольку вы используете прокси-сервер, вы, вероятно, не захотите анализировать весь поток req перед пересылкой на ваш источник. Поэтому я Возможно, я буду придерживаться обработки событий.

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