在rails中当路由或url有%时会显示空白页。为什么route中的%字符路由将显示空白?
e.g www.domain.com/% ----会显示空白页
我也查了一些网站,例如github.com/%但在空白页面仍然显示。
在rails中当路由或url有%时会显示空白页。为什么route中的%字符路由将显示空白?
e.g www.domain.com/% ----会显示空白页
我也查了一些网站,例如github.com/%但在空白页面仍然显示。
它与URL Encoding有关。简而言之。
URL编码将字符转换为可通过Internet传输的格式,可以传输 。
那么我们有可能会想一些基本术语知道
URL - 统一资源定位符
Web浏览器通过URL请求的Web服务器页面。 该网址是一个网页的地址,像https://stackoverflow.com/
URL编码(百分号编码)
网址,只能通过使用ASCII字符集互联网发送。
由于URL通常包含ASCII集外的字符,因此该URL有 要转换为有效的ASCII格式。
URL编码替换不安全的ASCII字符用 “%”其次 两个十六进制数字。网址不能包含空格。 URL编码 通常用加号(+)或%20替换空格。
好了,所以当你的路线只包含%
,它被确认为编码字符串,但它错过了两个十六进制数字沿袭你总是会得到一个空白页或自定义错误页取决于如何您的网站已配置。 因为浏览器将请求https://stackoverflow.com/%
并且它不存在。
如何处理它
基本上,如果请求到服务器时,您的网址是不适格式。它会回报你的HTTP 400 error code
这意味着
请求不能被服务器由于格式不正确的语法 理解。如果没有 修改,客户端不应该重复请求。
因此,我们需要做的只是在服务器上进行配置以重定向到自定义错误页面(本例中为ASP.NET网站的IIS Web服务器)。例子可以找到here
这是一个很好的解释有关如何工作的网址。但我想在轨道中优雅地处理它,所以我可以显示404页。就像'http:// stackoverflow.com /%'中显示'Bad Request - Invalid URL'消息,但是当你尝试'https:// github.com /%'时,它会显示空白页面。 – XanderDwyl
@XanderDwyl由于我不是Ruby开发人员,因此我已经使用.NET应用程序的示例更新了答案。希望你能明白这个主意。 – trungk18