2010-02-10 78 views
4

我正在使用Rails構建Web應用程序。如果沒有找到一個URL的記錄說http://example.com/city/non_existant_city然後我有以下代碼。我應該發送狀態爲404還是200?

render :text => "record was not found", :status => :not_found 

在firefox中,我看到消息。

在鉻(mac)上我看到一個chrome 404頁面,並且此頁面不顯示我發送的消息。

這讓我想知道是否應該發送狀態爲200.我發送404以便網絡抓取工具可以理解此鏈接始終返回404,因此一段時間後放棄了該鏈接。

回答

1

如果你告訴該頁面不存在,最終用戶,然後發送一個404

如果你告訴結束你請確保頁面存在,但他們正在查找的記錄不存在,然後創建一個普通頁面(200)並在其中顯示一條錯誤消息。

許多瀏覽器顯示「友好」404頁,這就是爲什麼你沒有看到你的消息。

1

記錄不被發現是否很常見?例如,人類輸入城市名稱,然後,如果名稱沒有找到,你可以給他們選擇?如果是這樣,那麼我會返回一個200頁,其中包括一個新的查詢框等

如果這是一個Web服務,然後404是好的,如果你想你的API在這種情況下返回是「沒有找到「。但是,如果您希望您的api額外返回其他信息,那麼200(加上一個非成功的錯誤代碼和其他信息)是要走的路。

相關問題