2012-11-15 156 views
4

我有一個頁面,通過AJAX將內容發佈到服務器。如果用戶未登錄或用戶無權發佈,服務器端腳本將返回狀態代碼401。問題是,瀏覽器用登錄對話框提示用戶,我們沒有權力抑制這一點。用500改變401可以嗎?如果不是,我可以使用什麼合適的通用或自定義代碼?替代HTTP狀態碼401?

回答

4

A在網站管理員StackExchange上的similar question was asked。 401用於HTTP身份驗證,407用於代理身份驗證,兩者都與您使用的基於表單的身份驗證不同。當用戶未登錄時,您當然可以返回500 - Internal Server error,但是我提到的帖子建議使用403 - Forbidden。 HTTP狀態碼列表及其含義可在here找到。

+1

401:「服務器理解請求,但拒絕履行它,授權不會幫助,...」它表示授權不會幫助,這是什麼意思? – dpp

+0

看起來像403意味着無論用戶是誰,資源仍然被禁止,這是否正確? – dpp

+1

他聲明'授權不會幫助',即「應該將'理解爲指協議級授權機制」,即HTTP認證。換句話說,HTTP授權不會有幫助,但是其他類型的授權,例如基於表單的授權。儘管它聲明請求不應該重複,但這並不意味着重新授權的新的和不同的請求無法完成。 –