diff --git a/lib/node-http-proxy/http-proxy.js b/lib/node-http-proxy/http-proxy.js index ffc2c9d..9e77103 100644 --- a/lib/node-http-proxy/http-proxy.js +++ b/lib/node-http-proxy/http-proxy.js @@ -212,13 +212,14 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) { // // Setup outgoing proxy with relevant properties. // - outgoing.host = this.target.host; - outgoing.hostname = this.target.hostname; - outgoing.port = this.target.port; - outgoing.agent = this.target.agent; - outgoing.method = req.method; - outgoing.path = req.url; - outgoing.headers = req.headers; + outgoing.host = this.target.host; + outgoing.hostname = this.target.hostname; + outgoing.port = this.target.port; + outgoing.socketPath = this.target.socketPath; + outgoing.agent = this.target.agent; + outgoing.method = req.method; + outgoing.path = req.url; + outgoing.headers = req.headers; // // If the changeOrigin option is specified, change the @@ -237,7 +238,7 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) { // // Process the `reverseProxy` `response` when it's received. // - if (response.headers.connection) { + if (!response.headers.connection) { if (req.headers.connection) { response.headers.connection = req.headers.connection } else { response.headers.connection = 'close' } } @@ -281,7 +282,10 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) { }); // Set the headers of the client response - res.writeHead(response.statusCode, response.headers); + Object.keys(response.headers).forEach(function(key){ + res.setHeader(key, response.headers[key]); + }); + res.writeHead(response.statusCode); // If `response.statusCode === 304`: No 'data' event and no 'end' if (response.statusCode === 304) { diff --git a/lib/node-http-proxy/routing-proxy.js b/lib/node-http-proxy/routing-proxy.js index d00b722..58ed244 100644 --- a/lib/node-http-proxy/routing-proxy.js +++ b/lib/node-http-proxy/routing-proxy.js @@ -85,11 +85,12 @@ RoutingProxy.prototype.add = function (options) { // // TODO: Consume properties in `options` related to the `ProxyTable`. // - options.target = options.target || {}; - options.target.host = options.target.host || options.host; - options.target.port = options.target.port || options.port; - options.target.https = this.target && this.target.https || - options.target && options.target.https; + options.target = options.target || {}; + options.target.host = options.target.host || options.host; + options.target.port = options.target.port || options.port; + options.target.socketPath = options.target.socketPath || options.socketPath; + options.target.https = this.target && this.target.https || + options.target && options.target.https; // // Setup options to pass-thru to the new `HttpProxy` instance