1

node-http-proxy を使用して作成されたプロキシを使用して、応答を変更しようとしています。ただし、応答ヘッダーにアクセスできません。JavaScriptファイルを変更し、変更したJavaScriptファイルをクライアントに送信したいので、応答ヘッダーにアクセスしたいと思います。

これは私のコードです:

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...");
});
4

1 に答える 1

2

writeHead()は必ずしもヘッダーの配列で呼び出す必要はなく、必要に応じてヘッダーをwrite()送信することもできます。

ヘッダーにアクセスする (またはヘッダーを設定する) 場合は、次のように使用できます。

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);
};

apply()実際には 3 つの引数を持つことができるため、すべての引数を古いメソッドに渡すために使用しwriteHead()ていますが、コードは 2 つしかないと想定していました。

于 2013-05-28T05:55:20.183 に答える