Node js прокси с телом запроса - PullRequest
1 голос
/ 20 января 2020

Я пытаюсь создать прокси-сервер на 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'
}
...