Monday, 15 May 2017

node http-proxy: async modification of request body

I need to modify the request body asynchronously. Something along the lines of this:

proxy.on('proxyReq', function(proxyReq, req, res, options) {
  if(req.body) {
    new Promise(function(resolve){ 
      setTimeout(function() { // wait for the db to return
        'use strict';
        req.body.text += 'test';
        let bodyData = JSON.stringify(req.body);
        proxyReq.setHeader('Content-Type','application/json');
        proxyReq.setHeader('Content-Length', Buffer.byteLength(bodyData));
        // stream the content
        proxyReq.write(bodyData);
        resolve();
      },1);
    });
  }
});

When I run this I get the error saying cannot modfiy headers once they have been set. Which makes sense.

How can I halt the sending of the request until I'm ready? I've looked at removing various listeners from proxyReq without success..



via AyKarsi

No comments:

Post a Comment