Project

General

Profile

Bug #12235

URI.encode issue with square brackets

Added by lucaspiller (Luca Spiller) over 3 years ago. Updated over 2 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 urisClosedActions
Related to Ruby master - Bug #9806: URI#encode doesn't encode characters '[' and ']'. They should be encoded as %5B and %5D respectively.Open05/06/2014Actions

History

Updated by lucaspiller (Luca Spiller) over 3 years ago

  • Subject changed from URI::Encode issue with square brackets to URI.encode issue with square brackets
#3

Updated by naruse (Yui NARUSE) over 3 years ago

  • Related to Bug #10619: URI::HTTP#query= behavior changed for 2396 uris added
#5

Updated by znz (Kazuhiro NISHIYAMA) over 2 years ago

  • Related to Bug #9806: URI#encode doesn't encode characters '[' and ']'. They should be encoded as %5B and %5D respectively. added

Also available in: Atom PDF