【问题标题】:Rails url attribute's value cannot contain symbol '#'Rails url 属性的值不能包含符号 '#'
【发布时间】:2014-03-24 08:48:54
【问题描述】:

我试过这样发送请求。

localhost:3000/ws/job_histories/index?agent_id=#1000

但是在控制器上我收到了agent_id='' 或者像这个

localhost:3000/ws/job_histories/index?agent_id=10#00

我收到了agent_id='10'。我认为问题是因为 Rails 像评论一样理解它。 如何正确接收我的数据。 Rails 没有给我任何例外。

【问题讨论】:

    标签: ruby-on-rails ruby http url uri


    【解决方案1】:

    井号是fragment identifier,您的浏览器永远不会将它发送到网络服务器。

    如果您想发送它,您需要对其进行 URL 编码 (%23),您可以使用 CGI.escape('#') 来实现。

    【讨论】:

    • 谢谢@Amadan,我补充了。
    【解决方案2】:

    这完全正常,哈希属于客户端,不会发送到服务器。

    # 代表哈希,所以删除它或对其进行编码

    【讨论】:

      【解决方案3】:

      哈希片段不会从浏览器发送到服务器,因此这对于任何服务器端框架都不起作用,而不仅仅是 Rails。

      来自Wikipedia, Fragment identifiers

      客户端在检索文档时不应该向服务器发送 URI 片段...

      来自URL Fragments and Redirects

      URL 的 Fragment 组件是从井号 (#) 开始的 URL 的结尾。 URL 片段永远不会在 HTTP 请求中发送到服务器...

      【讨论】:

        猜你喜欢
        • 2019-01-29
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 2012-01-19
        • 2021-11-18
        • 2014-08-16
        • 1970-01-01
        相关资源
        最近更新 更多