mirror of https://github.com/nodejs/node.git
Close #1360 url: Allow _ in hostnames.
parent
87d974bb8f
commit
dcecfc5f1b
|
@ -46,8 +46,8 @@ var protocolPattern = /^([a-z0-9]+:)/i,
|
||||||
.concat(unwise).concat(autoEscape),
|
.concat(unwise).concat(autoEscape),
|
||||||
nonAuthChars = ['/', '@', '?', '#'].concat(delims),
|
nonAuthChars = ['/', '@', '?', '#'].concat(delims),
|
||||||
hostnameMaxLen = 255,
|
hostnameMaxLen = 255,
|
||||||
hostnamePartPattern = /^[a-zA-Z0-9][a-z0-9A-Z-]{0,62}$/,
|
hostnamePartPattern = /^[a-zA-Z0-9][a-z0-9A-Z_-]{0,62}$/,
|
||||||
hostnamePartStart = /^([a-zA-Z0-9][a-z0-9A-Z-]{0,62})(.*)$/,
|
hostnamePartStart = /^([a-zA-Z0-9][a-z0-9A-Z_-]{0,62})(.*)$/,
|
||||||
// protocols that can allow "unsafe" and "unwise" chars.
|
// protocols that can allow "unsafe" and "unwise" chars.
|
||||||
unsafeProtocol = {
|
unsafeProtocol = {
|
||||||
'javascript': true,
|
'javascript': true,
|
||||||
|
@ -226,7 +226,7 @@ function urlParse(url, parseQueryString, slashesDenoteHost) {
|
||||||
var newOut = [];
|
var newOut = [];
|
||||||
for (var i = 0; i < domainArray.length; ++i) {
|
for (var i = 0; i < domainArray.length; ++i) {
|
||||||
var s = domainArray[i];
|
var s = domainArray[i];
|
||||||
newOut.push(s.match(/[^A-Za-z0-9-]/) ?
|
newOut.push(s.match(/[^A-Za-z0-9_-]/) ?
|
||||||
'xn--' + punycode.encode(s) : s);
|
'xn--' + punycode.encode(s) : s);
|
||||||
}
|
}
|
||||||
out.hostname = newOut.join('.');
|
out.hostname = newOut.join('.');
|
||||||
|
|
|
@ -327,8 +327,17 @@ var parseTests = {
|
||||||
'host': 'xn--hgi.ws',
|
'host': 'xn--hgi.ws',
|
||||||
'hostname': 'xn--hgi.ws',
|
'hostname': 'xn--hgi.ws',
|
||||||
'pathname': '/➡'
|
'pathname': '/➡'
|
||||||
|
},
|
||||||
|
'http://bucket_name.s3.amazonaws.com/image.jpg': {
|
||||||
|
protocol: 'http:',
|
||||||
|
slashes: true,
|
||||||
|
host: 'bucket_name.s3.amazonaws.com',
|
||||||
|
hostname: 'bucket_name.s3.amazonaws.com',
|
||||||
|
pathname: '/image.jpg',
|
||||||
|
href: 'http://bucket_name.s3.amazonaws.com/image.jpg'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
for (var u in parseTests) {
|
for (var u in parseTests) {
|
||||||
var actual = url.parse(u),
|
var actual = url.parse(u),
|
||||||
expected = parseTests[u];
|
expected = parseTests[u];
|
||||||
|
|
Loading…
Reference in New Issue