ruby URI.escape 和 URI.encode 和 URI.parse 错误
ruby URI.escape and URI.encode and URI.parse error
ruby 版本 2.2.2
url = "http://www.rugbyontario.com/AboutUs/NewsStories/LatestNews/tabid/15402/sni[20577]/4831/language/en-US/Default.aspx"
URI.parse(URI.encode(url))
这给出:
*** URI::InvalidURIError Exception: bad URI(is not URI?): http://www.rugbyontario.com/AboutUs/NewsStories/LatestNews/tabid/15402/sni[20577]/4831/language/en-US/Default.aspx
实际 url 在浏览器中工作,我已经在尝试逃避它,它仍然给我一个错误。有更好的方法吗?
我现在正在使用 addressable
gem,在这种情况下,这个可以正确转义 url。
我必须承认我不太习惯阅读 RfC,但是,从我从 RfC3986 中了解到的情况来看,[
和 ]
在 URI 的路径组件中确实是非法的.所以,Ruby 是正确的:URI 无效。
您的浏览器接受它并不意味着什么。众所周知,浏览器会接受损坏的输入,以免惹恼非技术用户。
ruby 版本 2.2.2
url = "http://www.rugbyontario.com/AboutUs/NewsStories/LatestNews/tabid/15402/sni[20577]/4831/language/en-US/Default.aspx"
URI.parse(URI.encode(url))
这给出:
*** URI::InvalidURIError Exception: bad URI(is not URI?): http://www.rugbyontario.com/AboutUs/NewsStories/LatestNews/tabid/15402/sni[20577]/4831/language/en-US/Default.aspx
实际 url 在浏览器中工作,我已经在尝试逃避它,它仍然给我一个错误。有更好的方法吗?
我现在正在使用 addressable
gem,在这种情况下,这个可以正确转义 url。
我必须承认我不太习惯阅读 RfC,但是,从我从 RfC3986 中了解到的情况来看,[
和 ]
在 URI 的路径组件中确实是非法的.所以,Ruby 是正确的:URI 无效。
您的浏览器接受它并不意味着什么。众所周知,浏览器会接受损坏的输入,以免惹恼非技术用户。