2013-05-13 126 views
4

今天一個共同工作使用了一個刪除動作550錯誤,當用戶沒有權限,最初看起來不好,因爲我知道,有點錯誤看起來像客戶端(又名4xx)錯誤對我而不是服務器(aka 5xx)。正確使用HTTP錯誤代碼。 550 - 爲什麼它是5xx而不是4xx?

查看說明時,它確切地表明它正確使用。而不是401錯誤,我之前使用了一些「問題」。

401錯誤的問題是:如果用戶A登錄並嘗試執行返回401的操作,則可能表明您必須「登錄」,因爲您沒有有效的憑據來訪問該http資源。這種方法的問題是,如果用戶登錄,服務器知道他沒有權限,在這種情況下,看起來像550更合適,但對我來說不應該在這裏使用550錯誤場景。

問題是: 在基於web的應用程序中550錯誤的正確使用(如果有)是什麼。我知道它用於FTP和SMTP中繼的使用。 如果某些登錄用戶,發送一個不允許的動作請求,應該返回哪個錯誤?

謝謝!

回答

7

5xx錯誤是SERVER錯誤。如果用戶沒有權限,則應該是4XX錯誤。

但是你是對的。 401錯誤意味着用戶必須登錄才能訪問。即需要認證。

你要找的錯誤是403禁止

這已超過任何含糊其是否是因爲用戶登錄或沒有。其明確的裁減。

從上HTTP錯誤代碼的維基(http://en.wikipedia.org/wiki/List_of_HTTP_status_codes)(重點煤礦):

403禁止

請求是一個有效的請求,但服務器拒絕迴應 它[2]。與401未經授權的回覆不同,身份驗證將使 沒有區別。[2]在需要身份驗證的服務器上,此 通常意味着所提供的憑證已成功通過 身份驗證,但憑證仍不會授予客戶端訪問資源的權限(例如,識別的用戶嘗試訪問受限制的內容的 )。

再次,根據上述維基,沒有這樣的事情,如550錯誤。我想你可以選擇自己實現它,但可能不需要誠實。它應該是標準中定義的服務器錯誤。

相關問題