在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