博客 > 一篇文搞清楚HTTP狀態(tài)碼
瀏覽量:1562次評論:0次
作者:銳成網(wǎng)絡整理時間:2024-05-17 14:18:56
HTTP狀態(tài)碼的基本概念
在客戶端和服務器連接交互的時候,一般是客戶端先給服務器發(fā)送請求,然后服務器返回結(jié)果。
客戶端和服務器之間的交互非常頻繁,涉及到很多種不同類型的操作,大多數(shù)的時候服務器能成功返回結(jié)果,有時候也會出錯,有的時候還需要重定向,讓客戶端訪問新的地址。
那么服務器是如何通知客戶端,操作是成功還是失???或者有其他的一些情況呢?
答案就是通過HTTP狀態(tài)碼。
HTTP狀態(tài)碼是作為服務器對客戶端HTTP請求的響應。它們是一系列標準化的三位數(shù)字代碼,用于告知客戶端請求的處理情況。每個狀態(tài)碼的第一個數(shù)字標識了響應的類型。
狀態(tài)碼分類
1xx(信息響應):表示服務器收到請求,需要請求者繼續(xù)執(zhí)行操作。
2xx(成功):表示請求成功,請求被成功接收并處理。
3xx(重定向):表示重定向,需要進一步的操作以完成請求。
4xx(客戶端錯誤):表示客戶端錯誤,請求包含語法錯誤或無法完成請求。
5xx(服務器錯誤):表示服務器錯誤,服務器在處理請求的過程中發(fā)生了錯誤。
HTTP狀態(tài)碼介紹
1xx(信息響應)
狀態(tài)碼 |
英文名稱 |
描述 |
100 |
Continue |
服務器已經(jīng)接收到請求頭,客戶端應繼續(xù)發(fā)送請求主體。 |
101 |
Switching Protocols |
服務器即將切換的協(xié)議。 |
2xx(成功)
狀態(tài)碼 |
英文名稱 |
描述 |
200 |
OK |
請求成功,響應體隨之返回了請求的資源。在瀏覽器請求網(wǎng)頁或API請求數(shù)據(jù)時常見此狀態(tài)碼。簡單來說,它告訴客戶端:“你的請求已經(jīng)成功處理,并且所請求的資源在消息體中。” |
201 |
Created |
該請求已成功,并因此創(chuàng)建了一個新的資源。這通常是在 POST 請求,或是某些 PUT 請求之后返回的響應。這個狀態(tài)碼的核心含義是:“你的請求已成功,并且因此創(chuàng)建了一個新的資源。” |
202 |
Accepted |
已經(jīng)接受請求,但未處理完成。 |
203 |
Non-Authoritative Information |
非授權信息,表示服務器已成功處理請求,但返回的信息可能來自其他地方,而非原始服務器。 |
204 |
No Content |
無內(nèi)容,服務器成功處理了請求,但不需要返回任何內(nèi)容。 |
205 |
Reset Content |
重置內(nèi)容,請求已經(jīng)成功處理,現(xiàn)在應該重置表單,以便用戶可以繼續(xù)輸入新的信息 。 |
206 |
Partial Content |
部分內(nèi)容,服務器已經(jīng)成功處理了部分GET請求。比如斷點續(xù)傳,在下載大文件時,如果下載過程中斷,可以從上次中斷的地方恢復下載,而不是重新開始。。 |
3xx(重定向)
狀態(tài)碼 |
英文名稱 |
描述 |
300 |
Multiple Choices |
多種選擇,請求的資源包括多個可選項,客戶端應該根據(jù)這些選項選擇一個進行訪問。 |
301 |
Moved Permanently |
永久移動,表示所請求的資源已被永久移動到了新的位置,并且將來對此資源的引用應該使用返回的一個或多個URI。這是一種重定向狀態(tài)碼,用于告知客戶端資源的新位置。 |
302 |
Found |
臨時移動,表示請求的資源臨時移動到了一個不同的URI,與301不同的是,302表示這種重定向只是暫時的。 |
303 |
See Other |
查看其它地址,將客戶端重定向到不同的URI,這是對原始請求的響應,但響應本身位于另一個URI。這通常用于在POST請求之后進行,指示客戶端向另一個URI發(fā)出GET請求以檢索操作結(jié)果。 |
304 |
Not Modified |
未修改,這意味著客戶端緩存的版本仍然是最新的,因此不需要重新下載資源,所以客戶端只需訪問緩存獲取數(shù)據(jù)就行了。 |
305 |
Use Proxy |
使用代理,所請求的資源必須通過代理訪問 |
306 |
Unused |
已經(jīng)被廢棄的HTTP狀態(tài)碼 |
307 |
Temporary Redirect |
臨時重定向,307狀態(tài)碼與302 Found非常相似,都用于表示資源臨時性的重定向到另一個URI。當收到307響應時,客戶端應該對新的URI重新發(fā)起請求,但是與302不同的是,307保證請求方法和請求體不會改變(例如,POST請求不會變成GET)。這使得307更適合于需要保留請求方法的場景,例如表單提交。 |
4xx(客戶端錯誤)
狀態(tài)碼 |
英文名稱 |
描述 |
400 |
Bad Request |
服務器無法理解客戶端的請求,因為請求的語法錯誤或格式不正確。它通常發(fā)生在客戶端發(fā)送了錯誤的請求數(shù)據(jù)或格式,如錯誤的請求行或頭部,或無效的請求消息體。 |
401 |
Unauthorized |
請求需要用戶驗證,如果之前已經(jīng)發(fā)送過認證信息,那么401表示認證失敗。它通常用于表示客戶端嘗試訪問受保護的資源但沒有提供正確的認證證書,如用戶名和密碼。 |
402 |
Payment Required |
保留,將來使用。在未來,它可能會用于數(shù)字支付系統(tǒng)。 |
403 |
Forbidden |
服務器理解了客戶端的請求,但是拒絕執(zhí)行。這通常是由于服務器上的訪問控制規(guī)則造成的,比如客戶端沒有足夠的權限訪問特定的資源。 |
404 |
Not Found |
服務器無法根據(jù)客戶端的請求找到資源(網(wǎng)頁)。通過此代碼,網(wǎng)站設計人員可設置"您所請求的資源無法找到"的個性頁面。 |
405 |
Method Not Allowed |
客戶端請求中的方法被禁止,這個狀態(tài)碼表示服務器已經(jīng)識別了請求的方法(如GET、POST、PUT等),但該方法對于請求的資源是禁用的。例如,嘗試用POST方法訪問一個只允許GET請求的URL。 |
406 |
Not Acceptable |
服務器無法生成客戶端在請求的Accept頭中指定的內(nèi)容特性響應。例如,客戶端請求JSON格式的數(shù)據(jù),但服務器只能提供XML格式。 |
407 |
Proxy Authentication Required |
請求要求代理的身份認證,類似于401,但是指出客戶端必須先在代理服務器上進行認證。 |
408 |
Request Time-out |
服務器等待客戶端發(fā)送的請求時間過長,超時。 |
409 |
Conflict |
表示請求與服務器當前狀態(tài)沖突,例如多個同步更新之間的編輯沖突。 |
410 |
Gone |
請求的資源已被永久刪除,不再可用。與404不同,410指明這是一個已知的條件,資源以前是存在的。網(wǎng)站設計人員可通過301代碼指定資源的新位置。 |
411 |
Length Required |
服務器拒絕不含有效內(nèi)容長度(Content-Length)頭的請求。某些服務器配置要求必須知道請求的大小。 |
412 |
Precondition Failed |
客戶端在其請求中設置的前提條件失敗。例如,客戶端可能發(fā)送了“If-Match”請求頭來基于特定版本的資源進行更新,但是資源的當前版本與客戶端的不匹配。 |
413 |
Request Entity Too Large |
由于請求的實體過大,服務器無法處理,超出了服務器愿意或能夠處理的范圍。 |
414 |
Request-URI Too Large |
請求的URI過長(URI通常為網(wǎng)址),服務器無法處理。 |
415 |
Unsupported Media Type |
請求附帶的媒體格式,服務器無法處理。 |
416 |
Requested range not satisfiable |
客戶端在請求中指定的Range頭無法滿足,可能是請求的范圍超出了目標URI的數(shù)據(jù)大小。 |
417 |
Expectation Failed |
服務器無法滿足Expect請求頭中的期望。例如,當客戶端在其HTTP請求頭中設置了“Expect”頭字段,它可能包含了一個特定的預期,例如“100-continue”,表示客戶端希望在發(fā)送請求的主體之前得到服務器的確認。如果服務器無法滿足這個預期,或者不理解請求頭中的“Expect”字段,它會返回417 Expectation Failed狀態(tài)碼。 |
5xx(服務器錯誤)
狀態(tài)碼 |
英文名稱 |
描述 |
500 |
Internal Server Error |
服務器內(nèi)部錯誤,無法完成請求。500錯誤是一個“服務器端”錯誤,意味著問題出在服務器上,而不是客戶端請求有誤。這可能是由于服務器程序錯誤、配置問題或資源不足導致。 |
501 |
Not Implemented |
服務器不支持當前請求所需的功能。當服務器不識別請求方法,并且無法支持其對任何資源的處理時,就會返回這個狀態(tài)碼。比如,客戶端發(fā)送了一個服務器不識別的自定義請求方法。 |
502 |
Bad Gateway |
服務器作為網(wǎng)關或代理,從上游服務器收到無效響應。502錯誤表明你正在訪問的服務器是一個網(wǎng)關或代理服務器,而它在處理請求時從上游服務器或輔助服務器接收到了無效的響應。 |
503 |
Service Unavailable |
由于臨時的服務器維護或者過載,服務器當前無法處理請求。這個狀況是暫時的,并且將在一段時間以后恢復。如果能夠預計延遲時間,那么響應中可以包含一個Retry-After頭用以標明這個延遲時間。如果沒有給出這個Retry-After信息,那么客戶端應當以處理500響應的方式處理它。 |
504 |
Gateway Time-out |
作為網(wǎng)關或代理的服務器未能在允許的時間內(nèi)從上游服務器(或輔助服務器)接收請求。504錯誤與502錯誤相似,但區(qū)別在于502錯誤表明無效響應,而504錯誤是由于響應超時。 |
505 |
HTTP Version not supported |
服務器不支持或拒絕支持在請求中使用的HTTP協(xié)議版本。 |
常見的HTTP狀態(tài)碼解析
1、200 OK
看到“200 OK”就表示請求成功了,并且服務器端的內(nèi)容已經(jīng)正常返回。
2、304 Not Modified
表示服務器上的資源未修改,這意味著客戶端緩存的版本仍然是最新的,因此不需要重新下載資源,所以客戶端只需訪問緩存獲取數(shù)據(jù)就行了。
3、400 Bad Request
服務器無法理解客戶端的請求,因為請求的語法錯誤或格式不正確。它通常發(fā)生在客戶端發(fā)送了錯誤的請求數(shù)據(jù)或格式,在應該填寫時間的地方填了一大串數(shù)字。
4、404 Not Found
服務器無法根據(jù)客戶端的請求找到資源(網(wǎng)頁),通常是客戶端發(fā)送給服務器的URL寫錯了。
我們上網(wǎng)的時候輸錯網(wǎng)址,經(jīng)常能看到“你訪問的頁面不存在”。
5、500 Internal Server Error
服務器內(nèi)部錯誤,無法完成請求。500錯誤是一個“服務器端”錯誤,意味著問題出在服務器上,而不是客戶端請求有誤。這可能是由于服務器程序錯誤、配置問題或資源不足導致。
最后
HTTP 狀態(tài)碼能夠非常清楚地描述服務器的當前狀態(tài),用來提示客戶端下一步的操作。
除此之外,HTTP 狀態(tài)碼還有一個作用,就是能有效防止程序員同學們甩鍋,當系統(tǒng)出現(xiàn)一個bug的時候,他們第一反應大概率是:這肯定不是我寫的代碼出問題了。
但是,如果服務器返回4xx錯誤,那大概率就是前端同學的鍋,前端同學就要第一時間介入;如果服務器返回5xx錯誤,就可以理直氣壯地找后端同學解決問題了。
重要聲明:本文來自編程我也會,經(jīng)授權轉(zhuǎn)載,版權歸原作者所有,不代表銳成觀點,轉(zhuǎn)載的目的在于傳遞更多知識和信息。
相關文章推薦
2025-05-27 11:53:22
2024-08-20 17:58:16
2024-08-19 17:49:29
2024-08-19 10:23:28
2024-08-16 17:06:33
我的評論
還未登錄?點擊登錄