Project

General

Profile

Bug #11149

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

Added by davispuh (Dāvis Mosāns) about 5 years ago. Updated about 2 years ago.

Status:
Rejected
Priority:
Normal
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 5 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 5 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 2 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 2 years ago

  • Status changed from Assigned to Rejected

Chrome also follows the behavior.

Also available in: Atom PDF