为什么路由中包含%字符的路由会显示空白?

时间:2016-10-18 03:08:41

标签: ruby-on-rails

当路径或网址为%时,

在rails中将显示空白页。

例如www.domain.com/% ----将显示空白页

我还查看了一些像github.com/%这样的网站,但仍然显示在空白页面中。

1 个答案:

答案 0 :(得分:2)

URL Encoding有关。简而言之。

  

URL编码将字符转换为可以传输的格式   通过互联网。

然后我们有一些你可能想知道的基本术语

网址 - 统一资源定位器

  

Web浏览器使用URL从Web服务器请求页面。   该网址是网页的地址,例如https://stackoverflow.com/

网址编码(编码百分比)

  

只能使用ASCII字符集通过Internet发送URL。

     

由于URL通常包含ASCII集之外的字符,因此URL具有   转换为有效的ASCII格式。

     

网址编码使用"%" 替换不安全的ASCII字符,然后   两个十六进制数字。网址不能包含空格。 URL编码   通常用加号(+)或%20替换空格。

好吧,所以当你的路线只包含%时,它被识别为已编码的字符串,但它错过了两个十六进制数字,因此您将始终获得空白页或自定义错误页面取决于您的网站配置方式。 因为浏览器会向https://stackoverflow.com/%请求并且它不存在。

如何处理

基本上,如果您的URL在请求服务器时处于不适当的格式。它将返回HTTP 400 error code,这意味着

  

10.4.1 400 Bad Request

     

由于格式错误,服务器无法理解该请求   句法。客户端不应该重复请求   修改

所以我们需要做的就是在服务器上进行配置以重定向到自定义错误页面(在本例中为ASP.NET网站的IIS Web服务器)。示例可以找到here