图解 HTTP 笔记(四)——HTTP 状态码
本章主要內(nèi)容是了解 HTTP 狀態(tài)碼的工作機(jī)制
狀態(tài)碼的職責(zé)是當(dāng)客戶(hù)端向服務(wù)器端發(fā)送請(qǐng)求時(shí),描述返回的請(qǐng)求結(jié)果。借助狀態(tài)碼,我們可以了解這次請(qǐng)求是否在服務(wù)器端得到了正常的處理。
狀態(tài)碼從其含以上可以分為五種:
| 1XX | Informational(信息性狀態(tài)碼) | 接受的請(qǐng)求正在處理 |
| 2XX | Success(成功狀態(tài)碼) | 請(qǐng)求正常處理完畢 |
| 3XX | Redirection(重定向狀態(tài)碼) | 需要進(jìn)行附加操作以完成請(qǐng)求 |
| 4XX | Client Error(客戶(hù)端錯(cuò)誤狀態(tài)碼) | 服務(wù)器無(wú)法處理請(qǐng)求 |
| 5XX | Server Error(服務(wù)端錯(cuò)誤狀態(tài)碼) | 服務(wù)器處理請(qǐng)求出錯(cuò) |
下面介紹一下常用的一些狀態(tài)碼。
一、2XX 成功
1.1 200 OK
表示從客戶(hù)端發(fā)送的請(qǐng)求被服務(wù)器正常處理了。
1.2 204 No Content
該狀態(tài)碼表示客戶(hù)端發(fā)送的請(qǐng)求已經(jīng)在服務(wù)器端正常處理了,但是沒(méi)有返回的內(nèi)容,響應(yīng)報(bào)文中不包含實(shí)體的主體部分。
一般在只需要從客戶(hù)端往服務(wù)器端發(fā)送信息,而服務(wù)器端不需要往客戶(hù)端發(fā)送內(nèi)容時(shí)使用。
1.3 206 Partial Content
該狀態(tài)碼表示客戶(hù)端進(jìn)行了范圍請(qǐng)求,而服務(wù)器端執(zhí)行了這部分的 GET 請(qǐng)求。響應(yīng)報(bào)文中包含由 Content-Range 指定范圍的實(shí)體內(nèi)容。
二、3XX 重定向
3XX 響應(yīng)狀態(tài)碼表示瀏覽器需要執(zhí)行某些特殊的處理以正確處理請(qǐng)求。
2.1 301 Moved Permanently
永久性重定向。
該狀態(tài)碼表示請(qǐng)求的資源已經(jīng)被分配了新的 URI,以后應(yīng)使用資源指定的 URI。新的 URI 會(huì)在 HTTP 響應(yīng)頭中的 Location 首部字段指定。
2.2 302 Found
臨時(shí)重定向。
該狀態(tài)碼表示請(qǐng)求的資源被分配到了新的 URI,希望用戶(hù)(本次)能使用新的 URI 訪問(wèn)資源。
和 302 Moved Permanently 狀態(tài)碼相似,但是 302 代表的資源不是被永久重定向,只是臨時(shí)性質(zhì)的。
2.3 303 See Other
該狀態(tài)碼表示由于請(qǐng)求對(duì)應(yīng)的資源存在著另一個(gè) URI,應(yīng)使用 GET 方法定向獲取請(qǐng)求的資源。
303 狀態(tài)碼和 302 Found 狀態(tài)碼有著相似的功能,但是 303 狀態(tài)碼明確表示客戶(hù)端應(yīng)當(dāng)采用 GET 方法獲取資源。
當(dāng) 301、302、303 響應(yīng)狀態(tài)碼返回時(shí),幾乎所有的瀏覽器都會(huì)把 POST 改成 GET,并刪除請(qǐng)求報(bào)文內(nèi)的主體,之后請(qǐng)求會(huì)再次自動(dòng)發(fā)送。
301、302 標(biāo)準(zhǔn)是禁止將 POST 方法變成 GET 方法的,但實(shí)際大家都會(huì)這么做。
2.4 304 Not Modified
該狀態(tài)碼表示客戶(hù)端發(fā)送附帶條件的請(qǐng)求時(shí)(GET 請(qǐng)求包含 If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since 中任一首部)服務(wù)端允許訪問(wèn)請(qǐng)求訪問(wèn)資源,但因?yàn)檎?qǐng)求沒(méi)有滿(mǎn)足條件,所以發(fā)生 304 Not Modified 重定向,直接使用客戶(hù)端緩存的資源。
2.5 307 Temporary Redirect
臨時(shí)重定向。
該狀態(tài)碼與 302 Found 有著相同含義,盡管 302 標(biāo)準(zhǔn)禁止 POST 變成 GET,但是實(shí)際使用時(shí)還是這樣做了。
307 會(huì)遵守瀏覽器標(biāo)準(zhǔn),不會(huì)從 POST 變成 GET。但是對(duì)于處理請(qǐng)求的行為時(shí),不同瀏覽器還是會(huì)出現(xiàn)不同的情況。
三、4XX 客戶(hù)端錯(cuò)誤
4XX 的結(jié)果表明客戶(hù)端是發(fā)生錯(cuò)誤的原因所在。
3.1 400 Bad Request
該狀態(tài)碼表示請(qǐng)求報(bào)文中存在語(yǔ)法錯(cuò)誤。當(dāng)錯(cuò)誤發(fā)生時(shí),需修改請(qǐng)求的內(nèi)容后再次發(fā)送請(qǐng)求。
3.2 401 Unauthorized
該狀態(tài)碼表示請(qǐng)求需要通過(guò)認(rèn)證。
3.3 403 Forbidden
該狀態(tài)碼表明請(qǐng)求資源的訪問(wèn)被服務(wù)器拒絕了,服務(wù)器端沒(méi)有必要給出詳細(xì)理由,但是可以在響應(yīng)報(bào)文實(shí)體的主體中進(jìn)行說(shuō)明。
3.4 Not Found
該狀態(tài)碼表明服務(wù)器上無(wú)法找到請(qǐng)求的資源。
四、5XX 服務(wù)端錯(cuò)誤
5XX 的響應(yīng)結(jié)果表明服務(wù)端本身發(fā)生了錯(cuò)誤。
4.1 500 Internet Server Error
該狀態(tài)碼表明服務(wù)端在執(zhí)行請(qǐng)求時(shí)存在錯(cuò)誤,也有可能是 Web 應(yīng)用存在的 bug 或者某些臨時(shí)故障。
4.2 503 Service Unavailable
該狀態(tài)碼表明服務(wù)器暫時(shí)處于超負(fù)載或正在進(jìn)行停機(jī)維護(hù),現(xiàn)在無(wú)法處理請(qǐng)求。
轉(zhuǎn)載于:https://www.cnblogs.com/DM428/p/11203706.html
總結(jié)
以上是生活随笔為你收集整理的图解 HTTP 笔记(四)——HTTP 状态码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: ActiveState Komodo I
- 下一篇: 作为面试官的一点小感想