mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
Merge pull request #799 from F4-Group/fix_https
Fix default port detection with node 0.12.x
This commit is contained in:
commit
6201ac76f7
@ -134,7 +134,20 @@ common.getPort = function(req) {
|
|||||||
|
|
||||||
return res ?
|
return res ?
|
||||||
res[1] :
|
res[1] :
|
||||||
req.connection.pair ? '443' : '80';
|
common.hasEncryptedConnection(req) ? '443' : '80';
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if the request has an encrypted connection.
|
||||||
|
*
|
||||||
|
* @param {Request} req Incoming HTTP request.
|
||||||
|
*
|
||||||
|
* @return {Boolean} Whether the connection is encrypted or not.
|
||||||
|
*
|
||||||
|
* @api private
|
||||||
|
*/
|
||||||
|
common.hasEncryptedConnection = function(req) {
|
||||||
|
return Boolean(req.connection.encrypted || req.connection.pair);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -64,7 +64,7 @@ web_o = Object.keys(web_o).map(function(pass) {
|
|||||||
function XHeaders(req, res, options) {
|
function XHeaders(req, res, options) {
|
||||||
if(!options.xfwd) return;
|
if(!options.xfwd) return;
|
||||||
|
|
||||||
var encrypted = req.isSpdy || req.connection.encrypted || req.connection.pair;
|
var encrypted = req.isSpdy || common.hasEncryptedConnection(req);
|
||||||
var values = {
|
var values = {
|
||||||
for : req.connection.remoteAddress || req.socket.remoteAddress,
|
for : req.connection.remoteAddress || req.socket.remoteAddress,
|
||||||
port : common.getPort(req),
|
port : common.getPort(req),
|
||||||
|
|||||||
@ -57,7 +57,7 @@ var passes = exports;
|
|||||||
var values = {
|
var values = {
|
||||||
for : req.connection.remoteAddress || req.socket.remoteAddress,
|
for : req.connection.remoteAddress || req.socket.remoteAddress,
|
||||||
port : common.getPort(req),
|
port : common.getPort(req),
|
||||||
proto: req.connection.pair ? 'wss' : 'ws'
|
proto: common.hasEncryptedConnection(req) ? 'wss' : 'ws'
|
||||||
};
|
};
|
||||||
|
|
||||||
['for', 'port', 'proto'].forEach(function(header) {
|
['for', 'port', 'proto'].forEach(function(header) {
|
||||||
|
|||||||
@ -35,6 +35,7 @@ describe('lib/http-proxy.js', function() {
|
|||||||
ssl: {
|
ssl: {
|
||||||
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
||||||
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
||||||
|
ciphers: 'AES128-GCM-SHA256',
|
||||||
}
|
}
|
||||||
}).listen(ports.proxy);
|
}).listen(ports.proxy);
|
||||||
|
|
||||||
@ -65,6 +66,7 @@ describe('lib/http-proxy.js', function() {
|
|||||||
var source = https.createServer({
|
var source = https.createServer({
|
||||||
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
||||||
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
||||||
|
ciphers: 'AES128-GCM-SHA256',
|
||||||
}, function (req, res) {
|
}, function (req, res) {
|
||||||
expect(req.method).to.eql('GET');
|
expect(req.method).to.eql('GET');
|
||||||
expect(req.headers.host.split(':')[1]).to.eql(ports.proxy);
|
expect(req.headers.host.split(':')[1]).to.eql(ports.proxy);
|
||||||
@ -105,6 +107,7 @@ describe('lib/http-proxy.js', function() {
|
|||||||
var source = https.createServer({
|
var source = https.createServer({
|
||||||
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
||||||
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
||||||
|
ciphers: 'AES128-GCM-SHA256',
|
||||||
}, function(req, res) {
|
}, function(req, res) {
|
||||||
expect(req.method).to.eql('GET');
|
expect(req.method).to.eql('GET');
|
||||||
expect(req.headers.host.split(':')[1]).to.eql(ports.proxy);
|
expect(req.headers.host.split(':')[1]).to.eql(ports.proxy);
|
||||||
@ -119,6 +122,7 @@ describe('lib/http-proxy.js', function() {
|
|||||||
ssl: {
|
ssl: {
|
||||||
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
||||||
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
||||||
|
ciphers: 'AES128-GCM-SHA256',
|
||||||
},
|
},
|
||||||
secure: false
|
secure: false
|
||||||
}).listen(ports.proxy);
|
}).listen(ports.proxy);
|
||||||
@ -150,6 +154,7 @@ describe('lib/http-proxy.js', function() {
|
|||||||
var source = https.createServer({
|
var source = https.createServer({
|
||||||
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
||||||
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
||||||
|
ciphers: 'AES128-GCM-SHA256',
|
||||||
}).listen(ports.source);
|
}).listen(ports.source);
|
||||||
|
|
||||||
var proxy = httpProxy.createProxyServer({
|
var proxy = httpProxy.createProxyServer({
|
||||||
@ -161,7 +166,11 @@ describe('lib/http-proxy.js', function() {
|
|||||||
|
|
||||||
proxy.on('error', function (err, req, res) {
|
proxy.on('error', function (err, req, res) {
|
||||||
expect(err).to.be.an(Error);
|
expect(err).to.be.an(Error);
|
||||||
expect(err.toString()).to.be('Error: DEPTH_ZERO_SELF_SIGNED_CERT')
|
if (process.versions.node.indexOf('0.12.') == 0) {
|
||||||
|
expect(err.toString()).to.be('Error: self signed certificate')
|
||||||
|
} else {
|
||||||
|
expect(err.toString()).to.be('Error: DEPTH_ZERO_SELF_SIGNED_CERT')
|
||||||
|
}
|
||||||
done();
|
done();
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -191,6 +200,7 @@ describe('lib/http-proxy.js', function() {
|
|||||||
var ownServer = https.createServer({
|
var ownServer = https.createServer({
|
||||||
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
key: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-key.pem')),
|
||||||
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
cert: fs.readFileSync(path.join(__dirname, 'fixtures', 'agent2-cert.pem')),
|
||||||
|
ciphers: 'AES128-GCM-SHA256',
|
||||||
}, function (req, res) {
|
}, function (req, res) {
|
||||||
proxy.web(req, res, {
|
proxy.web(req, res, {
|
||||||
target: 'http://127.0.0.1:' + ports.source
|
target: 'http://127.0.0.1:' + ports.source
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user