http-proxy
Advanced tools
Comparing version 1.15.2 to 1.16.0
@@ -100,3 +100,4 @@ var http = require('http'), | ||
// And we begin! | ||
server.emit('start', req, res, options.target) | ||
server.emit('start', req, res, options.target || options.forward); | ||
if(options.forward) { | ||
@@ -107,2 +108,9 @@ // If forward enable, so just pipe the request | ||
); | ||
// error handler (e.g. ECONNRESET, ECONNREFUSED) | ||
// Handle errors on incoming request as well as it makes sense to | ||
var forwardError = createErrorHandler(forwardReq, options.forward); | ||
req.on('error', forwardError); | ||
forwardReq.on('error', forwardError); | ||
(options.buffer || req).pipe(forwardReq); | ||
@@ -135,18 +143,19 @@ if(!options.target) { return res.end(); } | ||
// Handle errors on incoming request as well as it makes sense to | ||
// handle errors in proxy and incoming request, just like for forward proxy | ||
var proxyError = createErrorHandler(proxyReq, options.target); | ||
req.on('error', proxyError); | ||
// Error Handler | ||
proxyReq.on('error', proxyError); | ||
function proxyError (err){ | ||
if (req.socket.destroyed && err.code === 'ECONNRESET') { | ||
server.emit('econnreset', err, req, res, options.target); | ||
return proxyReq.abort(); | ||
} | ||
function createErrorHandler(proxyReq, url) { | ||
return function proxyError(err) { | ||
if (req.socket.destroyed && err.code === 'ECONNRESET') { | ||
server.emit('econnreset', err, req, res, url); | ||
return proxyReq.abort(); | ||
} | ||
if (clb) { | ||
clb(err, req, res, options.target); | ||
} else { | ||
server.emit('error', err, req, res, options.target); | ||
if (clb) { | ||
clb(err, req, res, url); | ||
} else { | ||
server.emit('error', err, req, res, url); | ||
} | ||
} | ||
@@ -153,0 +162,0 @@ } |
@@ -86,15 +86,30 @@ var url = require('url'), | ||
writeHeaders: function writeHeaders(req, res, proxyRes, options) { | ||
var rewriteCookieDomainConfig = options.cookieDomainRewrite; | ||
var rewriteCookieDomainConfig = options.cookieDomainRewrite, | ||
setHeader = function(key, header) { | ||
if (header != undefined) { | ||
if (rewriteCookieDomainConfig && key.toLowerCase() === 'set-cookie') { | ||
header = common.rewriteCookieDomain(header, rewriteCookieDomainConfig); | ||
} | ||
res.setHeader(String(key).trim(), header); | ||
} | ||
}; | ||
if (typeof rewriteCookieDomainConfig === 'string') { //also test for '' | ||
rewriteCookieDomainConfig = { '*': rewriteCookieDomainConfig }; | ||
} | ||
Object.keys(proxyRes.headers).forEach(function(key) { | ||
var header = proxyRes.headers[key]; | ||
if (header != undefined) { | ||
if (rewriteCookieDomainConfig && key.toLowerCase() === 'set-cookie') { | ||
header = common.rewriteCookieDomain(header, rewriteCookieDomainConfig); | ||
} | ||
res.setHeader(String(key).trim(), header); | ||
} | ||
}); | ||
// message.rawHeaders is added in: v0.11.6 | ||
// https://nodejs.org/api/http.html#http_message_rawheaders | ||
if (proxyRes.rawHeaders != undefined) { | ||
for (var i = 0; i < proxyRes.rawHeaders.length; i += 2) { | ||
var key = proxyRes.rawHeaders[i]; | ||
var header = proxyRes.rawHeaders[i + 1]; | ||
setHeader(key, header); | ||
}; | ||
} else { | ||
Object.keys(proxyRes.headers).forEach(function(key) { | ||
var header = proxyRes.headers[key]; | ||
setHeader(key, header); | ||
}); | ||
} | ||
}, | ||
@@ -101,0 +116,0 @@ |
{ | ||
"name": "http-proxy", | ||
"version": "1.15.2", | ||
"version": "1.16.0", | ||
"repository": { | ||
@@ -5,0 +5,0 @@ "type": "git", |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
46818
823