Skip to content

Commit c81bae2

Browse files
committed
[fix minor] Correctly set x-forwarded-proto in WebSocket requests
1 parent 6f8ad3b commit c81bae2

File tree

1 file changed

+30
-28
lines changed

1 file changed

+30
-28
lines changed

lib/node-http-proxy/http-proxy.js

+30-28
Original file line numberDiff line numberDiff line change
@@ -131,28 +131,29 @@ HttpProxy.prototype.proxyRequest = function (req, res, buffer) {
131131
// * `x-forwarded-port`: Port of the original request.
132132
//
133133
if (this.enable.xforward && req.connection && req.socket) {
134-
135134
if (req.headers['x-forwarded-for']){
136-
var addressToAppend = "," + req.connection.remoteAddress || req.socket.remoteAddress;
137-
req.headers['x-forwarded-for'] += addressToAppend;
138-
} else {
139-
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.socket.remoteAddress;
135+
var addressToAppend = "," + req.connection.remoteAddress || req.socket.remoteAddress;
136+
req.headers['x-forwarded-for'] += addressToAppend;
137+
}
138+
else {
139+
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.socket.remoteAddress;
140140
}
141141

142142
if (req.headers['x-forwarded-port']){
143-
var portToAppend = "," + req.connection.remotePort || req.socket.remotePort;
144-
req.headers['x-forwarded-port'] += portToAppend;
145-
} else {
146-
req.headers['x-forwarded-port'] = req.connection.remotePort || req.socket.remotePort;
143+
var portToAppend = "," + req.connection.remotePort || req.socket.remotePort;
144+
req.headers['x-forwarded-port'] += portToAppend;
145+
}
146+
else {
147+
req.headers['x-forwarded-port'] = req.connection.remotePort || req.socket.remotePort;
147148
}
148149

149150
if (req.headers['x-forwarded-proto']){
150-
var protoToAppend = "," + req.connection.pair ? 'https' : 'http';
151-
req.headers['x-forwarded-proto'] += protoToAppend;
152-
} else {
153-
req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http';
151+
var protoToAppend = "," + req.connection.pair ? 'https' : 'http';
152+
req.headers['x-forwarded-proto'] += protoToAppend;
153+
}
154+
else {
155+
req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http';
154156
}
155-
156157
}
157158

158159
//
@@ -420,28 +421,29 @@ HttpProxy.prototype.proxyWebSocketRequest = function (req, socket, head, buffer)
420421
// * `x-forwarded-port`: Port of the original request.
421422
//
422423
if (this.enable.xforward && req.connection && req.connection.socket) {
423-
424424
if (req.headers['x-forwarded-for']){
425-
var addressToAppend = "," + req.connection.remoteAddress || req.connection.socket.remoteAddress;
426-
req.headers['x-forwarded-for'] += addressToAppend;
427-
} else {
428-
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress;
425+
var addressToAppend = "," + req.connection.remoteAddress || req.connection.socket.remoteAddress;
426+
req.headers['x-forwarded-for'] += addressToAppend;
427+
}
428+
else {
429+
req.headers['x-forwarded-for'] = req.connection.remoteAddress || req.connection.socket.remoteAddress;
429430
}
430431

431432
if (req.headers['x-forwarded-port']){
432-
var portToAppend = "," + req.connection.remotePort || req.connection.socket.remotePort;
433-
req.headers['x-forwarded-port'] += portToAppend;
434-
} else {
435-
req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort;
433+
var portToAppend = "," + req.connection.remotePort || req.connection.socket.remotePort;
434+
req.headers['x-forwarded-port'] += portToAppend;
435+
}
436+
else {
437+
req.headers['x-forwarded-port'] = req.connection.remotePort || req.connection.socket.remotePort;
436438
}
437439

438440
if (req.headers['x-forwarded-proto']){
439-
var protoToAppend = "," + req.connection.pair ? 'https' : 'http';
440-
req.headers['x-forwarded-proto'] += protoToAppend;
441-
} else {
442-
req.headers['x-forwarded-proto'] = req.connection.pair ? 'https' : 'http';
441+
var protoToAppend = "," + req.connection.pair ? 'wss' : 'ws';
442+
req.headers['x-forwarded-proto'] += protoToAppend;
443+
}
444+
else {
445+
req.headers['x-forwarded-proto'] = req.connection.pair ? 'wss' : 'ws';
443446
}
444-
445447
}
446448

447449
//

0 commit comments

Comments
 (0)