mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
Merge pull request #733 from richardkazuomiller/double-slash-fix
do not modify the query string
This commit is contained in:
commit
eb95660822
@ -77,7 +77,7 @@ common.setupOutgoing = function(outgoing, options, req, forward) {
|
||||
if (options.changeOrigin) {
|
||||
outgoing.headers.host = outgoing.host;
|
||||
}
|
||||
|
||||
|
||||
return outgoing;
|
||||
};
|
||||
|
||||
@ -134,9 +134,24 @@ common.getPort = function(req) {
|
||||
|
||||
common.urlJoin = function() {
|
||||
var args = Array.prototype.slice.call(arguments);
|
||||
|
||||
// We do not want to mess with the query string. All we want to touch is the path.
|
||||
var lastIndex = args.length-1;
|
||||
var last = args[lastIndex]
|
||||
var lastSegs = last.split('?')
|
||||
args[lastIndex] = lastSegs[0]
|
||||
|
||||
// Join all strings, but remove empty strings so we don't get extra slashes from
|
||||
// joining e.g. ['', 'am']
|
||||
return args.filter(function filter(a) {
|
||||
return !!a;
|
||||
}).join('/').replace(/\/+/g, '/');
|
||||
var retSegs = [
|
||||
args.filter(function filter(a) {
|
||||
return !!a;
|
||||
}).join('/').replace(/\/+/g, '/')
|
||||
];
|
||||
|
||||
// Only join the query string if it exists so we don't have trailing a '?'
|
||||
// on every request
|
||||
lastSegs[1] && retSegs.push(lastSegs[1]);
|
||||
|
||||
return retSegs.join('?')
|
||||
};
|
||||
|
||||
@ -202,6 +202,15 @@ describe('lib/http-proxy/common.js', function () {
|
||||
|
||||
expect(outgoing.path).to.eql('/forward/static/path');
|
||||
})
|
||||
|
||||
it('should not modify the query string', function () {
|
||||
var outgoing = {};
|
||||
common.setupOutgoing(outgoing, {
|
||||
target: { path: '/forward' },
|
||||
}, { url: '/?foo=bar//&target=http://foobar.com/' });
|
||||
|
||||
expect(outgoing.path).to.eql('/forward/?foo=bar//&target=http://foobar.com/');
|
||||
})
|
||||
});
|
||||
|
||||
describe('#setupSocket', function () {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user