【问题标题】:Is there any way to encode the URL at runtime in rails?有什么方法可以在运行时在 Rails 中对 URL 进行编码?
【发布时间】:2015-03-17 06:05:12
【问题描述】:

在我的 rails 应用程序中,我有搜索功能。用户可以直接在 URL 中输入搜索字符串。如果用户输入搜索字符串为'%',则 URL 变为:

http://localhost:3000/search/% 

这会产生 Bad Request 错误。是否有任何选项可以在运行时对 URL 进行编码?

【问题讨论】:

    标签: ruby-on-rails ruby url encode


    【解决方案1】:

    您提出的问题实际上并不能解决您所描述的问题。是的,Rails 可以在运行时对 URL 进行编码,实际上它在正常运行时会在运行时对许多 URL 进行编码。

    但是,这对您没有帮助,基本上发生的情况是,当您的用户创建一个带有 % 的 URL 时,他们实际上是在创建一个无效的 URL - 不仅适用于 Rails,而且适用于任何 Web 服务器,或 Web 应用程序服务器或框架。

    如果您仔细查看在浏览器中返回的错误,它甚至不是来自 Rails,而是来自 WEBrick(或您正在使用的任何 httpd),与将记录到日志中的错误相同,它是在路由或其他地方不是正常的 Rails 错误。

    所有这一切的结果是,不,你不能在 Rails 中处理这个问题,因为在许多情况下它甚至无法通过 Rails,而且它只是一个完全无效的 URL。

    【讨论】:

    • 是的,你是对的。有没有办法处理这个错误?我只想显示错误图像。
    • 这是来自您的 Web 服务器的 400 错误,您需要在您的 Web 服务器配置中为其创建自定义处理程序。例如。在您的 nginx 配置中,Rails 无法提供帮助。
    • 我在瘦服务器中遇到错误。 /gems/thin-1.6.2/lib/thin/request.rb:84:in `execute'
    • 对,正如我所说,它在 Web 服务器中,而不是在 Rails 中。你应该在这里接受我关于 Rails 的问题,然后如果你仍然需要帮助,那么如果你使用 Thin 作为生产服务器,你应该问一个关于如何使用 thin 标签配置自定义 400 响应的新问题。跨度>
    猜你喜欢
    • 1970-01-01
    • 2023-02-09
    • 2012-12-16
    • 1970-01-01
    • 2012-10-28
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    相关资源
    最近更新 更多