HTTP狀態(tài)碼表示客戶端請(qǐng)求的請(qǐng)求結(jié)果、標(biāo)記服務(wù)器是否發(fā)生異常胀屿、給出錯(cuò)誤原因塘揣。
1. 狀態(tài)碼分類
狀態(tài)碼由3位數(shù)字和原因短語組成。
數(shù)字的第一位指定響應(yīng)類別宿崭,后兩位無指定意義亲铡。
標(biāo)準(zhǔn)的狀態(tài)碼總共有60多種。實(shí)際上經(jīng)常使用的大概有14種劳曹。
2. 2xx成功
2xx的響應(yīng)結(jié)果表示請(qǐng)求被成功處理了奴愉。
2.1 200 OK
在響應(yīng)報(bào)文中琅摩,隨狀態(tài)碼一起返回的信息會(huì)隨著請(qǐng)求方法的不同而發(fā)生變化铁孵。比如,GET
方法會(huì)使得對(duì)應(yīng)資源的資源實(shí)體作為響應(yīng)返回房资;而HEAD
方法只產(chǎn)生攜帶首部信息的響應(yīng)蜕劝。
2.2 204 No Content
該狀態(tài)碼表示請(qǐng)求已經(jīng)被成功執(zhí)行,但是沒有合適的資源返回轰异,主體實(shí)體部分為空岖沛。當(dāng)瀏覽器收到204
狀態(tài)碼時(shí),頁面不發(fā)生更新搭独。
一般在只需要從客戶端往服務(wù)器發(fā)送信息婴削,而不需要服務(wù)器響應(yīng)新內(nèi)容時(shí)使用。
2.3 206 Partial Content
該狀態(tài)碼表示客戶端進(jìn)行范圍請(qǐng)求(Range Request)牙肝,而服務(wù)器成功執(zhí)行了這部分的請(qǐng)求唉俗。響應(yīng)報(bào)文中的Content-Range
字段指定了范圍實(shí)體的內(nèi)容嗤朴。
這一狀態(tài)在斷點(diǎn)續(xù)傳時(shí)常用。
3. 3xx重定向
3xx響應(yīng)表示瀏覽器需要執(zhí)行某種特殊的處理以正確處理請(qǐng)求虫溜。
3.1 301 Moved Permanently
永久性重定向雹姊。該狀態(tài)碼表示該資源已經(jīng)被重新分配了新的URI(URL包含了URL)。后面對(duì)該資源的請(qǐng)求應(yīng)該指向新的URL
3.2 302 Found
臨時(shí)性重定向衡楞。該狀態(tài)碼表示請(qǐng)求的資源已經(jīng)被分配了新的URI吱雏。希望用戶本次能訪問到新的URI。
和301 永久重定向相似瘾境。但302代表資源不是永久性移動(dòng)歧杏,而是臨時(shí)性的。也就是說迷守,后面還有可能變化得滤。
3.3 303 See Other
該狀態(tài)碼表示由于請(qǐng)求的對(duì)應(yīng)資源存在另一個(gè)URI,應(yīng)使用GET
方法定向獲取那個(gè)資源盒犹。
303 和 302 功能類似懂更。區(qū)別在于 303 明確要求瀏覽器使用GET方法獲取新的URI。
當(dāng)301急膀、302沮协、303響應(yīng)狀態(tài)碼返回時(shí),幾乎所有瀏覽器會(huì)把POST改成GET卓嫂,并刪除請(qǐng)求報(bào)文內(nèi)的主體慷暂,然后用GET發(fā)送新的請(qǐng)求。
3.4 304 Not Modified
該狀態(tài)碼發(fā)生在用戶發(fā)送了攜帶Last-Modified-Since
首部字段的請(qǐng)求報(bào)文晨雳,且服務(wù)器對(duì)應(yīng)的資源更新時(shí)間小于該字段指定的時(shí)間時(shí)行瑞,服務(wù)器返回304 Not Modified。
當(dāng)瀏覽器有資源緩存和緩存時(shí)間(Last-Modified)餐禁,但客戶端將這個(gè)時(shí)間賦給Last-Modified-Since字段發(fā)給服務(wù)器血久,若服務(wù)器返回 304 表示沒有更新的內(nèi)容,瀏覽器上的緩存還可以用帮非。注意氧吐,304和重定向沒有關(guān)系,雖然它被劃在3xx系末盔。
3.5 307 Tempoary Redirect
臨時(shí)重定向筑舅。該狀態(tài)碼和302有相同的含義。
4. 4xx客戶端錯(cuò)誤
4xx響應(yīng)結(jié)果表明客戶端發(fā)生了錯(cuò)誤陨舱。
4.1 400 Bad Request
該狀態(tài)碼表示請(qǐng)求存在語法錯(cuò)誤翠拣,比如URI寫錯(cuò)了。
4.2 401 Unauthorized
該狀態(tài)碼表示發(fā)送的請(qǐng)求需要通過HTTP的認(rèn)證游盲。如果之前發(fā)送過一次請(qǐng)求误墓,說明上次的認(rèn)證失敗了邦尊。當(dāng)瀏覽器第一次收到401時(shí),會(huì)彈出認(rèn)證窗口优烧。
4.3 403 Forbidden
該狀態(tài)碼代表對(duì)請(qǐng)求資源的訪問被拒絕了蝉揍。可能是發(fā)送方的IP沒有被服務(wù)端允許畦娄,也有可能是對(duì)特定文件沒有訪問權(quán)限又沾。
4.4 404 Not Found
一種人民群眾喜聞樂見的狀態(tài)碼。它表示服務(wù)器上找不到請(qǐng)求的資源實(shí)體熙卡。不過當(dāng)服務(wù)器不想提供響應(yīng)時(shí)杖刷,也可以用這個(gè)狀態(tài)。
5. 5xx服務(wù)器錯(cuò)誤
5xx表明服務(wù)器本身發(fā)生錯(cuò)誤驳癌。
5.1 500 Internal Server Error
該狀態(tài)碼表明在服務(wù)端執(zhí)行請(qǐng)求時(shí)發(fā)生錯(cuò)誤滑燃,可能是應(yīng)用程序的bug。
5.2 503 Service Unavailable
該狀態(tài)碼表明服務(wù)器現(xiàn)在很忙或正在停機(jī)維護(hù)颓鲜。如果能預(yù)計(jì)恢復(fù)服務(wù)的時(shí)間表窘,應(yīng)當(dāng)在響應(yīng)報(bào)文中捎上Retry-After
字段給瀏覽器。
最后要提醒的是甜滨,許多響應(yīng)狀態(tài)碼和實(shí)際情況會(huì)不一致乐严,比如發(fā)生服務(wù)器內(nèi)部錯(cuò)誤,但用戶察覺不到衣摩,仍返回200