mirror of
https://github.com/http-party/node-http-proxy.git
synced 2025-12-08 20:59:18 +00:00
[Bugfix] Allow for multiple ? in outgoing urls.
Without this fix urls that had multiple ? in them would drop sections of the url since before there was an assumption of there only being one.
This commit is contained in:
parent
361d4e3b00
commit
70ed1c4273
@ -141,7 +141,7 @@ common.urlJoin = function() {
|
|||||||
lastSegs = last.split('?'),
|
lastSegs = last.split('?'),
|
||||||
retSegs;
|
retSegs;
|
||||||
|
|
||||||
args[lastIndex] = lastSegs[0];
|
args[lastIndex] = lastSegs.shift();
|
||||||
|
|
||||||
//
|
//
|
||||||
// Join all strings, but remove empty strings so we don't get extra slashes from
|
// Join all strings, but remove empty strings so we don't get extra slashes from
|
||||||
@ -155,7 +155,9 @@ common.urlJoin = function() {
|
|||||||
|
|
||||||
// Only join the query string if it exists so we don't have trailing a '?'
|
// Only join the query string if it exists so we don't have trailing a '?'
|
||||||
// on every request
|
// on every request
|
||||||
lastSegs[1] && retSegs.push(lastSegs[1]);
|
|
||||||
|
// Handle case where there could be multiple ? in the URL.
|
||||||
|
retSegs.concat(lastSegs);
|
||||||
|
|
||||||
return retSegs.join('?')
|
return retSegs.join('?')
|
||||||
};
|
};
|
||||||
|
|||||||
@ -203,13 +203,13 @@ describe('lib/http-proxy/common.js', function () {
|
|||||||
expect(outgoing.path).to.eql('/forward/static/path');
|
expect(outgoing.path).to.eql('/forward/static/path');
|
||||||
})
|
})
|
||||||
|
|
||||||
it('should not modify the query string', function () {
|
it.only('should not modify the query string', function () {
|
||||||
var outgoing = {};
|
var outgoing = {};
|
||||||
common.setupOutgoing(outgoing, {
|
common.setupOutgoing(outgoing, {
|
||||||
target: { path: '/forward' },
|
target: { path: '/forward' },
|
||||||
}, { url: '/?foo=bar//&target=http://foobar.com/' });
|
}, { url: '/?foo=bar//&target=http://foobar.com/?a=1%26b=2&other=2' });
|
||||||
|
|
||||||
expect(outgoing.path).to.eql('/forward/?foo=bar//&target=http://foobar.com/');
|
expect(outgoing.path).to.eql('/forward/?foo=bar//&target=http://foobar.com/?a=1%26b=2&other=2');
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user