溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

http的狀態(tài)碼有哪些

發(fā)布時間:2021-11-06 16:22:59 來源:億速云 閱讀:137 作者:iii 欄目:web開發(fā)

本篇內(nèi)容介紹了“http的狀態(tài)碼有哪些”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

基本介紹

狀態(tài)碼(Status Code)和原因短語(Reason Phrase)用于簡單描述請求的結(jié)果。常見的比如:

  • 200 OK,表示請求成功;

  • 404 Not Found表示請求的資源未找到。

原因短語(上面的ok 和Not Found)是對狀態(tài)碼的解釋說明。

形如200這樣的狀態(tài)碼,這里的3位數(shù)字中第1位數(shù)字,通常表示響應(yīng)的類別(會有一兩個例外),大致可以分成以下幾類(完整的狀態(tài)碼表,參見http1.1-RFC6):

狀態(tài)碼含義
1xx請求正被處理
2xx請求成功處理
3xx請求需要附加操作,常見的例子如重定向
4xx客戶端出錯導(dǎo)致請求無法被處理
5xx服務(wù)端處理出錯


(4,5常被用在排查bug時前后端互相甩鍋-_-!)下面詳細介紹常用的狀態(tài)碼和原因短語

分類

2xx

200 OK

表示請求已經(jīng)被正常處理,這個比較常見,就不多說了。

204 NO Content

表示請求成功,但是響應(yīng)的報文中不含實體主體。通常用于只需要客戶端向服務(wù)端發(fā)送信息,而不需要接受新信息的情況使用

(這么官方且抽象的描述顯然不是我的風(fēng)格),舉例:

現(xiàn)在很常見的一種請求類型option,通常被用來做正式請求的預(yù)請求,這個請求只需要確認后續(xù)的請求能不能通過,即只需要一個結(jié)果,而不需要返回其他內(nèi)容,這類請求成功時就會返回204。

相信大家小時候都經(jīng)??荚?,如果拿試題來打個比方,那么:

其他狀態(tài)碼可以比喻為填空題:客戶端提問(發(fā)請求),服務(wù)端給出詳細答案(返回實體內(nèi)容)。

204可以理解為判斷題:客戶端提問(發(fā)請求),服務(wù)端給出判斷,對或者錯(只要響應(yīng)頭有狀態(tài)碼,不需要實體內(nèi)容)

206 Partial Content

字面意思:只返回了請求資源的部分。這種情況必須提到提到一個請求頭Range——在http的請求中,這個頭部用來表示范圍請求,例如:

'Range':byte=5001-10000 // 表示本次要請求資源的5001-10000字節(jié)的部分

這種情況下,如果服務(wù)器接受范圍請求并且成功處理,就會返回206,并且在響應(yīng)的頭部返回

'Content-Range':bytes 5001-10000/10000 // 表示整個資源有10000字節(jié),本次返回的范圍為 5001-10000字節(jié)

3xx

301 Moved Permanently

字面意思:資源被***重定向了。這種情況下響應(yīng)的頭部字段Location中一般還會返回一個地址,用來表示要新地址。例如:

客戶端發(fā)起一個請求,要訪問a站點,此時收到的響應(yīng)如下:

301 Moved Permanently   ...  Location:`b.com`  ...  //上述內(nèi)容表示:親,您請求的資源已經(jīng)***轉(zhuǎn)移啦,這邊建議您去新的地址b.com訪問呢,以后也請直接訪問新地址哦

302 Found

字面意思:資源臨時重定向了。和301的***區(qū)別就在于一個是臨時,一個是***:還是舉上面的例子,響應(yīng)如下:

302 Found ...  Location:`b.com`  ...  //上述內(nèi)容表示:親,您請求的資源被臨時轉(zhuǎn)移啦,后面也有可能再次轉(zhuǎn)移,所以這邊建議您本次去新的地址b.com訪問,以后的話還是先訪問原來地址哦,有任何變化mm依然會熱心為你解答

303 See Other

這個和302很像,但是有個細微區(qū)別是,除了會提示客戶端去請求Location以外,還會要求請求要使用Location時使用GET方法。 在這補充一下一個歷史背景:

請求返回301 302 303 時,幾乎所有瀏覽器都會把原先的POST請求改為GET請求。雖然FRC1945和RFC2068規(guī)范中有規(guī)定:不允許客戶端在重定向時修改方法。

簡單的說,實際的瀏覽器在處理301和302時,默認就會把原先的POST請求改為GET請求,所以實際上使用303的意義,單純只是讓語義化更清晰點。(303表示服務(wù)器明確告訴客戶端,你要使用GET方法訪問location;如果是302,就是僅僅告訴客戶端要訪問location,不限制方法,但是實際上客戶端自己也會用GET方法訪問。)

304 Not Modified

字面意思是:資源未改變,可直接使用緩存。

這種響應(yīng)一般是GET請求中帶有附加條件,例如請求頭中含有if-Match,if-Modified-Since等(if-Match表示只請求帶有特殊標(biāo)記的資源,if-Modified-Since表示請求指定時間后未變更的資源,因為本文主要講解狀態(tài)碼,所以不在此引入太多http頭部的相關(guān)內(nèi)容,這里是為了簡單解釋下附加條件請求的含義)。

這種情況下,服務(wù)端不會返回響應(yīng)主體,含義就是:”從你上次訪問以來這個資源都沒變過喲,直接使用你本地的緩存就行啦“。

304就是3xx里面的一個特例,因為它不算是一個重定向。(一般我們認為重定向要給出一個新的地址讓客戶端去訪問,304如果一定要解釋為重定向,只能解釋為讓客戶端轉(zhuǎn)去訪問緩存-_-)

307 Temporary Redirect

這個重定向是為了解決前面剛剛介紹的一個歷史背景問題:302時瀏覽器默認會轉(zhuǎn)用GET方法去請求Location,而如果是307, 含義就是嚴(yán)格限制不允許從POST轉(zhuǎn)為GET,這個目前我在實際工作中很少遇到。

4xx

4xx表示一般是客戶端發(fā)生了錯誤。(這位前端同學(xué),乖乖接了這個bug吧?。?/p>

400 Bad Request

(這個狀態(tài)碼相信大家一定很不陌生,特別是入門的新同學(xué)~)400的含義簡單粗暴:“對不起,你的請求中有語法錯誤”,那具體是什么語法錯誤呢? 答案是 —— 不一定,一般來說響應(yīng)報文里會有一些提示,例如:

  • “哎呀,你多加了什么請求頭,我不能接受呀”

  • “哎呀,你地址不是不是寫錯了,這個uri不存在啊”

  • “哎呀,你是不是請求方法錯了,這個uri之只能用put而不是post”

  • 下面請各位隨意補充

  • ...

401 Unauthorized

字面意思:未經(jīng)過認證。一般在后臺系統(tǒng)之類的應(yīng)用里,用戶登錄之后會獲得一個身份認證信息,然后生成mac之類的信息,放在請求頭的Authorization字段里,發(fā)送給服務(wù)端,如果這個認證信息有問題或者根本沒發(fā)送,就會出現(xiàn)這個狀態(tài)碼。

403 Forbidden

這個就簡單了:禁止訪問也就是無權(quán)限訪問。至于具體為什么禁止,服務(wù)器可以在響應(yīng)內(nèi)容的實體部分給出,當(dāng)然也可以不給(沒錯,我服務(wù)端就是這么了不起,為所欲為?。?/p>

404 Not Found

很常見了,字面含義,服務(wù)端沒有找到所請求的資源,經(jīng)驗表明,一般這個錯誤是客戶端的請求url寫錯了。(別問我怎么知道的)

5xx

5xx表明服務(wù)端發(fā)生了錯誤。(真是個令人開心的消息,老板,你看不是我的問題?。?/p>

500 Internal Server Error

簡單粗暴,服務(wù)器故障了。啥?你問我什么故障?我哪知道,我只會熟練地把bug轉(zhuǎn)給隔壁的服務(wù)端同學(xué)。

503 Service Unavailable

服務(wù)器暫時無法使用,可能是維護或者升級,反正無法使用。

“http的狀態(tài)碼有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI