HTTP狀態(tài)碼負責表示客戶端HTTP請求的返回結(jié)果窘疮、標記服務(wù)器端的處理是否正常矫付、通知出現(xiàn)的錯誤等工作揭斧。我們可以通過返回的狀態(tài)碼來判斷請求是成功或者失敗。
狀態(tài)碼類型
狀態(tài)碼 | 類別 | 原因短語 |
---|---|---|
1XX | Information(信息性狀態(tài)碼) | 接收的請求正在處理 |
2XX | Success(成功狀態(tài)碼) | 請求正常處理完畢 |
3XX | Redirection(重定向狀態(tài)碼) | 需要進行附加的操作以完成請求 |
4XX | Client Error(客戶端錯誤狀態(tài)碼) | 服務(wù)器無法處理請求 |
5XX | Server Error(服務(wù)端錯誤狀態(tài)碼) | 服務(wù)器處理請求出錯 |
2XX 成功
- 200 OK 表示從客戶端發(fā)來的請求在服務(wù)端被正常處理了崇棠。
- 204 No COntent 表示客戶端請求成功但是服務(wù)器返回的內(nèi)容沒有實體的主體內(nèi)容咽袜,也表示不能夠返回實體的主體。場景:用在客戶端像服務(wù)端發(fā)送內(nèi)容枕稀,而客戶端自己不需要做更新酬蹋。
- 206 Partial Content 該狀態(tài)碼表示客戶端進行了范圍請求并且服務(wù)器c成功的執(zhí)行了該GET請求。此時響應(yīng)報文里面應(yīng)該包含Content-Range字段來表示范圍抽莱。
3XX 重定向
-
301 Moved Permanently 永久重定向。該狀態(tài)碼表示當前請求的資源已經(jīng)被分配了新的URL骄恶,以后使用的話,應(yīng)該訪問新的URL。
-
302 Found 臨時重定向悦施。表名稱當前請求的資源已經(jīng)被分配了新的URL牧氮,希望客戶端(本次)使用新的URL來訪問。
-
303 See Other 該狀態(tài)碼表示由于請求對應(yīng)的資源存在著另一個URL寞秃,應(yīng)該使用GET方法定向獲取請求的資源斟叼。303 狀態(tài)碼和 302 Found 狀態(tài)碼有著相同的功能,但 303 狀態(tài)碼明確表示客戶端應(yīng)當采用 GET 方法獲取資源春寿,這點與 302 狀態(tài)碼有區(qū)別朗涩。
當 301、302绑改、303 響應(yīng)狀態(tài)碼返回時谢床,幾乎所有的瀏覽器都會把
POST 改成 GET,并刪除請求報文內(nèi)的主體厘线,之后請求會自動再次
發(fā)送识腿。
301、302 標準是禁止將 POST 方法改變成 GET 方法的造壮,但實際使
用時大家都會這么做渡讼。 -
304 Not Modified 該狀態(tài)表示客戶端發(fā)送附加條件的請求,而此時服務(wù)允許了請求,但是不滿足條件,才返回該狀態(tài)碼成箫,如果滿足就返回200展箱。
附加條件一般指的是:GET方法中請求報文中包含If-Mathc、If-Modified-Since伟众、If-Not-Match等,其中的任一請求首部析藕。
4XX 客戶端錯誤
-
400 Bad Request 該狀態(tài)碼表明,客戶端的請求報文中存在語法錯誤凳厢。當錯誤發(fā)生時账胧,客戶端需要重新修改請求內(nèi)容后,重新發(fā)送請求先紫。
-
401 Unauthorized 該狀態(tài)碼表示發(fā)送的請求需要通過HTTP認證(BASIC認證治泥、DIGEST認證)。另外遮精,如果用戶已經(jīng)進行過一次請求居夹,那么返回401則表示認證失敗。
-
403 Forbidden 該狀態(tài)碼表明客戶端請求被服務(wù)端拒絕本冲。此時服務(wù)端沒有必要對拒絕的原因進行說明准脂,但是如果需要給出,那么就可以在響應(yīng)實體中加入說明檬洞,返回給客戶端狸膏。
未獲得文件系統(tǒng)的訪問授權(quán),訪問權(quán)限出現(xiàn)某些問題(從未授權(quán)的發(fā)
送源 IP 地址試圖訪問)等列舉的情況都可能是發(fā)生 403 的原因添怔。
-
404 Not Found 該狀態(tài)表明服務(wù)器上無法定位請求的資源湾戳。另外,也可以在服務(wù)器拒絕客戶端請求但不想說明理由的時候返回該狀態(tài)碼广料。
5XX 服務(wù)器錯誤
-
500 Internal Server Error 該狀態(tài)表明砾脑,服務(wù)器在處理請求的時候,服務(wù)端內(nèi)部發(fā)生了錯誤艾杏。也可能是web應(yīng)用存在著bug或者臨時障礙韧衣。
-
503 Service Unavailable 該狀態(tài)表明,服務(wù)器正處于超負載和停機維護中,現(xiàn)在無法處理請求购桑。
狀態(tài)碼和狀況的不一致
不少返回的狀態(tài)碼響應(yīng)都是錯誤的汹族,但是用戶可能察覺不到這點。
比如 Web 應(yīng)用程序內(nèi)部發(fā)生錯誤其兴,狀態(tài)碼依然返回 200 OK顶瞒,這種
情況也經(jīng)常遇到。
github 歡迎Star元旬,歡迎討論