Fix handling of URLs containing :// in the path

fixes #2421
This commit is contained in:
Aria Stewart 2014-10-28 23:39:03 -04:00 committed by Douglas Christopher Wilson
parent d40dc651f3
commit eabd4564aa
3 changed files with 23 additions and 1 deletions

View File

@ -1,3 +1,8 @@
unreleased
==========
* Fix handling of URLs containing `://` in the path
4.10.0 / 2014-10-23
===================

View File

@ -126,7 +126,7 @@ proto.handle = function(req, res, done) {
var search = 1 + req.url.indexOf('?');
var pathlength = search ? search - 1 : req.url.length;
var fqdn = 1 + req.url.substr(0, pathlength).indexOf('://');
var fqdn = req.url[0] !== '/' && 1 + req.url.substr(0, pathlength).indexOf('://');
var protohost = fqdn ? req.url.substr(0, req.url.indexOf('/', 2 + fqdn)) : '';
var idx = 0;
var removed = '';

View File

@ -219,6 +219,23 @@ describe('Router', function(){
});
});
it('should ignore FQDN in path', function (done) {
var request = { hit: 0, url: '/proxy/http://example.com/blog/post/1', method: 'GET' };
var router = new Router();
router.use('/proxy', function (req, res, next) {
assert.equal(req.hit++, 0);
assert.equal(req.url, '/http://example.com/blog/post/1');
next();
});
router.handle(request, {}, function (err) {
if (err) return done(err);
assert.equal(request.hit, 1);
done();
});
});
it('should adjust FQDN req.url', function (done) {
var request = { hit: 0, url: 'http://example.com/blog/post/1', method: 'GET' };
var router = new Router();