Actions
Bug #12235
closedURI.encode issue with square brackets
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
Tags:
Description
URI::Encode doesn't correctly handle square brackets in the path of a URL:
> URI.encode('http://example.com/resource[1].doc')
=> "http://example.com/resource[1].doc"
It should return "http://example.com/resource%5B1%5D.doc".
As per RFC3986, square brackets are only valid in the host part, not the path part.
URI.parse correctly raises an error if a URL has square brackets in the path, which means URI::encode can return something that is rejected by URI.parse:
> URi.parse('http://example.com/resource[1].doc')
URI::InvalidURIError: bad URI(is not URI?): http://example.com/resource[1].doc
> URI.parse(URI::encode('http://example.com/resource[1].doc'))
URI::InvalidURIError: bad URI(is not URI?): http://example.com/resource[1].doc
Tested on Ruby 2.1.5 and 2.3.0 on OS X and Linux.
Actions
Like0
Like0Like0Like0Like0Like0Like0Like0