Project

General

Profile

Bug #12235

URI.encode issue with square brackets

Added by lucaspiller (Luca Spiller) over 4 years ago. Updated over 3 years ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
[ruby-core:74737]

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.


Related issues

Related to Ruby master - Bug #10619: URI::HTTP#query= behavior changed for 2396 urisClosednaruse (Yui NARUSE)Actions
Related to Ruby master - Bug #9806: URI#encode doesn't encode characters '[' and ']'. They should be encoded as %5B and %5D respectively.OpenActions

Also available in: Atom PDF