Skip to content

Instantly share code, notes, and snippets.

@iamedu
Created July 3, 2011 23:34
Show Gist options
  • Save iamedu/1062712 to your computer and use it in GitHub Desktop.
Save iamedu/1062712 to your computer and use it in GitHub Desktop.
Node http proxy, to check headers and files
var http = require('http');
var sys = require('sys');
http.createServer(function(request, response) {
sys.log(request.connection.remoteAddress + ": " + request.method + " " + request.url);
sys.log("Request headers " + JSON.stringify(request.headers, null, '\t'));
var options = {
host: request.headers.host,
port: 80,
path: request.url,
method: request.method,
headers: request.headers
};
var proxy_request = http.request(options, function onResponse(proxy_response) {
proxy_response.addListener('data', function onData(chunk) {
sys.debug("Fixing data " + chunk);
response.write(chunk, 'binary');
});
proxy_response.addListener('end', function onEnd() {
response.end();
});
sys.log("Response headers " + JSON.stringify(proxy_response.headers, null, '\t'));
response.writeHead(proxy_response.statusCode, proxy_response.headers);
});
proxy_request.on('error', function(err) {
sys.debug('There was an error' + err);
response.end();
});
request.addListener('data', function onData(chunk) {
proxy_request.write(chunk, 'binary');
});
request.addListener('end', function onEnd() {
proxy_request.end();
});
}).listen(8080);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment