Я пытаюсь создать прокси-сервер на node js. Но когда я получаю тело запроса, я не могу отправить этот запрос по доверенности. Я должен сначала подождать, пока тело полностью не прибудет (потому что мне нужно проверить его перед отправкой).
function get_query_string(req, res){
return new Promise(function (resolve, reject) {
if (req.method === 'POST' || req.method === 'PUT' || req.method === 'DELETE') {
var body = '';
req.on('data', function (data) {
body += data;
});
req.on('end', function () {
resolve(query_string = body);
});
/*formBody(req, res, function (err, body) {
if (err) reject(err);
resolve(console.log(body));
});*/
} else if (req.method === 'GET') {
resolve(query_string = req.url);
}
});
}
var server = http.createServer(function(req, res) {
request_handler.check(req, res, signatures).then(
result => {
console.log(123);
proxy.web(req, res, {
changeOrigin: true,
target: 'https://someurl',
//selfHandleResponse : true,
agent: new https.Agent({
port: 443,
key: fs.readFileSync(KEY),
cert: fs.readFileSync(CERT),
}),
});
},
error => {
console.log(error);
})
});
proxy.on('error', function(err){
if (err.code === "ECONNRESET") {
console.log("Timeout occurs");
console.log(err);
}
else{
console.log("Unknown error");
}
});
что я получаю в журнале консоли сервера при попытке отправить POST ( PUT, DELETE) запрос (GET-запрос работает нормально):
Timeout occurs
Error: socket hang up
at connResetException (internal/errors.js:575:14)
at TLSSocket.socketOnEnd (_http_client.js:438:23)
at TLSSocket.emit (events.js:215:7)
at endReadableNT (_stream_readable.js:1199:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {
code: 'ECONNRESET'
}