diff --git a/lib/url.js b/lib/url.js index 63d24bef7bf0bd..745c7c9930deda 100644 --- a/lib/url.js +++ b/lib/url.js @@ -294,29 +294,22 @@ Url.prototype.parse = function parse(url, parseQueryString, slashesDenoteHost) { rest = rest.slice(proto.length); } - // Figure out if it's got a host. - // user@server is *always* interpreted as a hostname, and URL + // Figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. http:@example.com is treated - // the same as http://example.com. + // how the browser resolves relative URLs. let slashes; - let at; if (slashesDenoteHost || proto || hostPattern.test(rest)) { slashes = rest.charCodeAt(0) === CHAR_FORWARD_SLASH && - rest.charCodeAt(1) === CHAR_FORWARD_SLASH; - at = rest.charCodeAt(0) === CHAR_AT; - if (!(proto && hostlessProtocol.has(lowerProto))) { - if (slashes) { - rest = rest.slice(2); - this.slashes = true; - } else if (at) { - rest = rest.slice(1); - } + rest.charCodeAt(1) === CHAR_FORWARD_SLASH; + if (slashes && !(proto && hostlessProtocol.has(lowerProto))) { + rest = rest.slice(2); + this.slashes = true; } } if (!hostlessProtocol.has(lowerProto) && - (slashes || at || (proto && !slashedProtocol.has(proto)))) { + (slashes || (proto && !slashedProtocol.has(proto)))) { // there's a hostname. // the first instance of /, ?, ;, or # ends the host. diff --git a/test/parallel/test-url-parse-format.js b/test/parallel/test-url-parse-format.js index a4bb141b49bfc7..e1cf80a2778abd 100644 --- a/test/parallel/test-url-parse-format.js +++ b/test/parallel/test-url-parse-format.js @@ -975,22 +975,7 @@ const parseTests = { query: null, pathname: '/everybody', path: '/everybody', - href: '//fhqwhgads@example.com/everybody#to-the-limit', - }, - - 'http:@localhost': { - protocol: 'http:', - slashes: null, - auth: null, - host: 'localhost', - port: null, - hostname: 'localhost', - hash: null, - search: null, - query: null, - pathname: '/', - path: '/', - href: 'http://localhost/', + href: '//fhqwhgads@example.com/everybody#to-the-limit' }, };