【发布时间】:2015-03-17 06:05:12
【问题描述】:
在我的 rails 应用程序中,我有搜索功能。用户可以直接在 URL 中输入搜索字符串。如果用户输入搜索字符串为'%',则 URL 变为:
http://localhost:3000/search/%
这会产生 Bad Request 错误。是否有任何选项可以在运行时对 URL 进行编码?
【问题讨论】:
标签: ruby-on-rails ruby url encode
在我的 rails 应用程序中,我有搜索功能。用户可以直接在 URL 中输入搜索字符串。如果用户输入搜索字符串为'%',则 URL 变为:
http://localhost:3000/search/%
这会产生 Bad Request 错误。是否有任何选项可以在运行时对 URL 进行编码?
【问题讨论】:
标签: ruby-on-rails ruby url encode
您提出的问题实际上并不能解决您所描述的问题。是的,Rails 可以在运行时对 URL 进行编码,实际上它在正常运行时会在运行时对许多 URL 进行编码。
但是,这对您没有帮助,基本上发生的情况是,当您的用户创建一个带有 % 的 URL 时,他们实际上是在创建一个无效的 URL - 不仅适用于 Rails,而且适用于任何 Web 服务器,或 Web 应用程序服务器或框架。
如果您仔细查看在浏览器中返回的错误,它甚至不是来自 Rails,而是来自 WEBrick(或您正在使用的任何 httpd),与将记录到日志中的错误相同,它是在路由或其他地方不是正常的 Rails 错误。
所有这一切的结果是,不,你不能在 Rails 中处理这个问题,因为在许多情况下它甚至无法通过 Rails,而且它只是一个完全无效的 URL。
【讨论】:
400 错误,您需要在您的 Web 服务器配置中为其创建自定义处理程序。例如。在您的 nginx 配置中,Rails 无法提供帮助。
thin 标签配置自定义 400 响应的新问题。跨度>