Project

General

Profile

Actions

Bug #11149

closed

URI.parse keeps '?' for query and '#' for fragment even if they are empty

Added by davispuh (Dāvis Mosāns) about 10 years ago. Updated about 7 years ago.

Status:
Rejected
Target version:
-
ruby -v:
ruby 2.2.1p85 (2015-02-26 revision 49769) [x64-mingw32]
[ruby-core:69158]

Description

p = URI.parse('http://example.com/path?query#fragment')
p.query = ''
p.fragment = ''
puts p.to_s

will output "http://example.com/path?#" but I think it should be "http://example.com/path" without '?' and '#'

Updated by naruse (Yui NARUSE) about 10 years ago

  • Status changed from Open to Assigned
  • Assignee set to naruse (Yui NARUSE)

As URL Standard, current behavior is correct.
https://url.spec.whatwg.org/

But Google Chrome's behavior is like what you say.

I keep watching how W3C/WHATWG decide this behavior.

Updated by davispuh (Dāvis Mosāns) about 10 years ago

Actually yes, I was wrong on this and it is expected behavior.

When one wants without '?' and '#' correct way is to set to nil and not to empty string ''

p.query = nil
p.fragment = nil

Updated by nobu (Nobuyoshi Nakada) over 7 years ago

At least, that test should not be in test_parse, but in test_set_component or others.

Updated by naruse (Yui NARUSE) about 7 years ago

  • Status changed from Assigned to Rejected

Chrome also follows the behavior.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0