Browse Source

url: Fix edge-case when protocol is non-lowercase

When using url.parse(), path and pathname usually return '/' when there
is no path available. However when you have a protocol that contains
non-lowercase letters and the input string does not have a trailing
slash, both path and pathname will be undefined.
v0.10.14-release
Shuan Wang 12 years ago
committed by isaacs
parent
commit
48a4600c56
  1. 2
      lib/url.js
  2. 10
      test/simple/test-url.js

2
lib/url.js

@ -318,7 +318,7 @@ Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {
this.query = {};
}
if (rest) this.pathname = rest;
if (slashedProtocol[proto] &&
if (slashedProtocol[lowerProto] &&
this.hostname && !this.pathname) {
this.pathname = '/';
}

10
test/simple/test-url.js

@ -44,6 +44,16 @@ var parseTests = {
'path': '/'
},
'HTTP://www.example.com' : {
'href': 'http://www.example.com/',
'protocol': 'http:',
'slashes': true,
'host': 'www.example.com',
'hostname': 'www.example.com',
'pathname': '/',
'path': '/'
},
'http://www.ExAmPlE.com/' : {
'href': 'http://www.example.com/',
'protocol': 'http:',

Loading…
Cancel
Save