Browse Source

url: add a got host pattern in url.js

Add a hostPattern variable for readable purposes

PR-URL: https://github.com/nodejs/node/pull/9653
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Brian White <mscdex@mscdex.net>
v6
Axel Monroy 8 years ago
committed by James M Snell
parent
commit
1be73e828d
  1. 3
      lib/url.js

3
lib/url.js

@ -42,6 +42,7 @@ function Url() {
// compiled once on the first module load. // compiled once on the first module load.
const protocolPattern = /^([a-z0-9.+-]+:)/i; const protocolPattern = /^([a-z0-9.+-]+:)/i;
const portPattern = /:[0-9]*$/; const portPattern = /:[0-9]*$/;
const hostPattern = /^\/\/[^@/]+@[^@/]+/;
// Special case for a simple path URL // Special case for a simple path URL
const simplePathPattern = /^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/; const simplePathPattern = /^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/;
@ -204,7 +205,7 @@ Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {
// user@server is *always* interpreted as a hostname, and url // user@server is *always* interpreted as a hostname, and url
// resolution will treat //foo/bar as host=foo,path=bar because that's // resolution will treat //foo/bar as host=foo,path=bar because that's
// how the browser resolves relative URLs. // how the browser resolves relative URLs.
if (slashesDenoteHost || proto || /^\/\/[^@/]+@[^@/]+/.test(rest)) { if (slashesDenoteHost || proto || hostPattern.test(rest)) {
var slashes = rest.charCodeAt(0) === 47/*/*/ && var slashes = rest.charCodeAt(0) === 47/*/*/ &&
rest.charCodeAt(1) === 47/*/*/; rest.charCodeAt(1) === 47/*/*/;
if (slashes && !(proto && hostlessProtocol[proto])) { if (slashes && !(proto && hostlessProtocol[proto])) {

Loading…
Cancel
Save