Accessing response headers using node-http-proxy

泪湿孤枕 提交于 2020-01-05 05:55:36

问题


I am trying to modify the response with the help of a proxy created using node-http-proxy. However I am not able to access the response headers. I want to access the response headers since I would like to modify javascript files and send the modified javascript files to the client.

This is my code:

var httpProxy = require('http-proxy');
var url = require('url');
var i = 0;

httpProxy.createServer(function(req, res, next) {
    var oldwriteHead = res.writeHead;
    res.writeHead = function(code, headers) {
        oldwriteHead.call(res, code, headers);
        console.log(headers); //this is undefined
    };
    next();
}, function(req, res, proxy) {
    var urlObj = url.parse(req.url);

    req.headers.host = urlObj.host;
    req.url = urlObj.path;

    proxy.proxyRequest(req, res, {
        host: urlObj.host,
        port: 80,
        enable: {xforward: true}
    });
}).listen(9000, function() {
    console.log("Waiting for requests...");
});

回答1:


writeHead() doesn't necessarily have to be called with an array of headers, write() can also send headers if necessary.

If you want to access headers (or set them), you can use this:

res.writeHead = function() {
  // To set:
  this.setHeader('your-header', 'your-header-value');

  // To read:
  console.log('Content-type:', this.getHeader('content-type'));

  // Call the original method !!! see text
  oldwriteHead.apply(this, arguments);
};

I'm using apply() to pass all the arguments to the old method, because writeHead() can actually have 3 arguments, while your code only assumed there were two.



来源:https://stackoverflow.com/questions/16784526/accessing-response-headers-using-node-http-proxy

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!