【问题标题】:Rails InvalidURIError on redirect_to with a valid url带有有效 url 的 redirect_to 上的 Rails InvalidURIError
【发布时间】:2011-12-05 11:03:29
【问题描述】:

我在做redirect_to 时收到ERROR URI::InvalidURIError: bad URI(is not URI?)。低于完整错误 mgs

[2011-12-05 16:17:10] ERROR URI::InvalidURIError: bad URI(is not URI?): http://0.0.0.0:3000/list/#/items/offered/list/80-21614629999999,13-0468673/15/0?Filters={}
/home/ramesh/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/uri/generic.rb:746:in `rescue in merge'
/home/ramesh/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/uri/generic.rb:743:in `merge'
/home/ramesh/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpresponse.rb:163:in `setup_header'
/home/ramesh/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpresponse.rb:101:in `send_response'
/home/ramesh/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:86:in `run'
/home/ramesh/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'

这是实际的网址

http://0.0.0.0:3000/list/#/items/offered/list/80-21614629999999,13-0468673/15/0?Filters={}

我完全感到困惑,因为在我的生产环境中同样可以正常工作。

此外,如果我从 url 中删除 ?Filters={} 查询字符串部分,它在开发环境中可以正常工作。

我不明白为什么在开发环境中使用?Filters={} 时会引发错误。有人可以澄清一下吗?

【问题讨论】:

    标签: ruby-on-rails ruby url redirect


    【解决方案1】:

    {} 应该被转义,并且下面的 url 是有效的:

    http://0.0.0.0:3000/list/#/items/offered/list/80-21614629999999,13-0468673/15/0?Filters=%7B%7D

    更新:

    不,检查https://www.rfc-editor.org/rfc/rfc3986

    fragment    = *( pchar / "/" / "?" )
    pchar         = unreserved / pct-encoded / sub-delims / ":" / "@"
    unreserved    = ALPHA / DIGIT / "-" / "." / "_" / "~"
    sub-delims    = "!" / "$" / "&" / "'" / "(" / ")"
                    / "*" / "+" / "," / ";" / "="
    

    【讨论】:

    • 是的,我怀疑。但这是在 url 的哈希部分(不完全是查询字符串).. 所以它应该可以工作
    • 如果是这样,应该是rails的bug
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多