diff --git a/querystring/parse.js b/querystring/parse.js index ed9496b0..24717b8f 100644 --- a/querystring/parse.js +++ b/querystring/parse.js @@ -15,7 +15,7 @@ module.exports = function(string) { if (value !== "" && !isNaN(number) || value === "NaN") value = number else if (value === "true") value = true else if (value === "false") value = false - else { + else if (value.charAt(0) !== "/") { var date = new Date(value) if (!isNaN(date.getTime())) value = date } diff --git a/querystring/tests/test-parseQueryString.js b/querystring/tests/test-parseQueryString.js index 89e78ada..d6f84526 100644 --- a/querystring/tests/test-parseQueryString.js +++ b/querystring/tests/test-parseQueryString.js @@ -20,6 +20,10 @@ o.spec("parseQueryString", function() { var data = parseQueryString("?%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23=%3B%3A%40%26%3D%2B%24%2C%2F%3F%25%23") o(data).deepEquals({";:@&=+$,/?%#": ";:@&=+$,/?%#"}) }) + o("handles escaped slashes followed by a number", function () { + var data = parseQueryString("?hello=%2Fen%2F1") + o(data.hello).equals("/en/1") + }) o("handles escaped square brackets", function() { var data = parseQueryString("?a%5B%5D=b") o(data).deepEquals({"a": ["b"]})