mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
Fix issue where front-end is HTTPS, back-end is HTTP, and server issues a redirect.
This handles the case where a back-end web application such as Django or Rails issues a redirect and automatically decorates the URL with the protocol with which it was addressed. If the back-ends are internal and HTTP-only, then they'll issue a URL with 'http://' as the protocol. This must be fixed before leaving the proxy. This also handles the (unusual) case where a back-end speaks only https://, but the user is deploying node-http-proxy to make that service available to non-SSL capable browsers. Works only with 301 and 302 codes.
This commit is contained in:
parent
553e7fbc33
commit
411bb51cc6
@ -213,6 +213,15 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
|
|||||||
delete response.headers['transfer-encoding'];
|
delete response.headers['transfer-encoding'];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((response.statusCode === 301) || (response.statusCode === 302)) {
|
||||||
|
if (self.source.https && !self.target.https) {
|
||||||
|
response.headers.location = response.headers.location.replace(/^http\:/, 'https:');
|
||||||
|
}
|
||||||
|
if (self.target.https && !self.source.https) {
|
||||||
|
response.headers.location = response.headers.location.replace(/^https\:/, 'http:');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Set the headers of the client response
|
// Set the headers of the client response
|
||||||
res.writeHead(response.statusCode, response.headers);
|
res.writeHead(response.statusCode, response.headers);
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user