2017-07-27 28 views
0

我發現很多HTTP狀態代碼的含義的答案和解釋。我的問題具體是關於POST請求到登錄端點,例如要求輸入用戶名和密碼以及提供錯誤提示的場景。REST API返回登錄請求時使用錯誤憑據執行的狀態碼是什麼?

的幾點思考:

400錯誤響應 我覺得這個代碼是不恰當的,因爲它說的請求是語法不正確,而不是由服務器,這是不是這裏的情況瞭解。登錄數據在語義上不正確。

401未授權 這是我的棘手部分。 如果401只能發生在需要認證頭的請求上,那麼這是不正確的。但是,如果401可能發生在所有需要認證的請求上(無論是作爲頭還是身體),那麼401就是候選人。

403禁止 通常情況下,如果用戶已經被驗證和系統已知的,但所請求的資源,他將返回403 /她是不允許訪問。 登錄前,用戶肯定沒有通過身份驗證。我不知道403是否有未經認證的用戶的語義。

我很高興被告知答案或聽到您的想法。

+0

你寫的所有內容似乎都是正確的,我沒有看到任何問題 –

+0

問題出在標題 –

+0

拋出他們的茶壺錯誤。爲什麼給黑客任何信息? – Will

回答

1

我的問題具體是關於POST請求登錄端點,例如要求輸入用戶名和密碼以及提供錯誤提示的情況。

這取決於憑據的發送方式:

  • 如果您正在使用HTTP Authentication(在Authorization頭髮送憑據),您可以返回401,表明憑證無效。

  • 如果您發送的請求主體(例如用戶名和密碼JSON)證書,401似乎不是最適合的狀態代碼(一旦它不是一個真正的HTTP認證)。在這種情況下,請考慮使用403,而不要使用描述性響應負載。


403狀態代碼也可以被用來指示授權問題,那就是,以指示不允許用戶執行動作。

1

無效憑證401當使用HTTP認證

403用戶登錄,但嘗試訪問不允許

+0

_'401' for invalid credentials_不太準確。它應該是:'401'表示無效憑證_when使用[HTTP認證](https://tools.ietf.org/html/rfc7235)_ –

+1

True! Thanx,Cássio我已經更新了答案以澄清。 –

1

如果用戶嘗試驗證區域,但提供了無效的憑證,響應應該無論您是否使用基本授權,都具有401的狀態。 401表示身份驗證失敗,但用戶可以更改其請求並再次嘗試。

如果用戶通過身份驗證但未被授權訪問請求的資源,則響應應具有403的狀態.403指示用戶被禁止訪問資源,並且無論他們如何更改請求,他們將不被允許訪問。

在端點需要證書位於請求正文(我建議不要)的情況下,如果請求正文不符合您的規範,則應返回400。但是,我強烈建議您使用標頭字段來傳遞憑據。

相關問題