喵星人教你HTTP狀態碼

在咱們平常 Web 開發中,或多或少的都接觸過 HTTP 狀態碼,那這些狀態碼錶明什麼意思呢?熟悉這些狀態碼又有什麼好處呢?下面我就爲你們一一道來,能夠把本片文章‘收藏’以備不時之需。瀏覽器

HTTP 狀態代碼表示什麼意思?

HTTP 狀態碼(英語:HTTP Status Code)是用以表示 HTTP 響應狀態的 3 位數字代碼。好比:緩存

  • 1xx:消息
  • 2xx:成功
  • 3xx:重定向
  • 4xx:客戶端錯誤
  • 5xx:服務器錯誤

熟記這些狀態碼可讓咱們在快速定位 Web 開發中遇到的問題、編寫符合規範的接口服務,那麼下面就讓咱們看看這些死板的 3 位數字都是什麼意思。擼貓愛好者,請注意:前方高能,屏住呼吸,一大波喵星人即未來襲!服務器

1、1xx 消息

這一類型的狀態碼,表明請求已被接受,須要繼續處理。這類響應是臨時響應,表示客戶應該採起的其它行動。網絡

100 Continue(繼續)

服務器已經接收到請求頭,請求者應當繼續提出請求。服務器返回此代碼表示已收到請求的第一部分,正在等待其他部分。網站

101 Switching Protocols(切換協議)

服務器已經理解了客戶端的請求,並將經過 Upgrade 消息頭通知客戶端採用不一樣的協議來完成這個請求。在發送完這個響應後,服務器將會切換到在 Upgrade 消息頭中定義的那些協議。ui

只有在切換新的協議更好的進行通訊。例如:切換到新的 HTTP 版本(如 HTTP/2)比舊版本更有優點、或切換到一個實時且同步的協議(如 WebSocket)等搜索引擎

2、2xx 成功

這一類型的狀態碼,表明請求已成功被服務器接收、理解、並接受。3d

200 OK(成功)

已成功處理了請求。出現此狀態碼是表示正常狀態。代理

201 Created(已建立)

請求成功而且服務器建立了新的資源。cdn

202 Accepted(已接受)

服務器已接受請求,但還沒有處理。

204 No Content(無內容)

服務器成功處理了請求,但沒有返回任何內容。

206 Partial Content(部份內容)

服務器成功處理了部分 GET 請求。

3、3xx 重定向

這類狀態碼錶明須要客戶端採起進一步的操做才能完成請求。一般,這些狀態碼用來重定向,後續的請求地址(重定向目標)在本次響應的 Location 域中指明。 當且僅當後續的請求所使用的方法是 GET 或者 HEAD 時,用戶瀏覽器才能夠在沒有用戶介入的狀況下自動提交所須要的後續請求。

客戶端應當自動監測無限循環重定向(例如:A->A,或者A->B->C->A),由於這會致使服務器和客戶端大量沒必要要的資源消耗。按照 HTTP/1.0 版規範的建議,瀏覽器不該自動訪問超過5次的重定向。

300 Multiple Choices(多種選擇)

針對請求,服務器可執行多種操做。服務器可根據請求者選擇一項操做,或提供操做列表供請求者選擇。

301 Moved Permanently(永久移動)

請求的資源已永久移動到新位置。服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。

302 Move Temporarily(臨時移動)

請求的資源臨時從不一樣的 URI 響應請求。因爲這樣的重定向是臨時的,客戶端應當繼續向原有地址發送之後的請求。只有在 Cache-Control 或 Expires 中進行了指定的狀況下,這個響應纔是可緩存的。

303 See Other(查看其餘位置)

對應當前請求的響應能夠在另外一個 URL 上被找到,並且客戶端應當採用 GET 的方式訪問那個資源。這個方法的存在主要是爲了容許由腳本激活的 POST 請求輸出重定向到一個新的資源。這個新的 URI 不是原始資源的替代引用。同時,303響應禁止被緩存。固然,第二個請求(重定向)可能被緩存。

304 Not Modified(未修改)

自從上次請求後,請求的資源未修改過。服務器返回此響應時,不會返回資源的內容,所以可節省帶寬和開銷。

305 Use Proxy(使用代理)

請求者只能使用代理訪問請求的網頁。若是服務器返回此響應,還表示請求者應使用代理。

307 Temporary Redirect(臨時重定向)

服務器目前從不一樣位置的網頁響應請求,但請求者應繼續使用原有位置來響應之後的請求。 此代碼與響應 GET 和 HEAD 請求的 301 代碼相似,會自動將請求者轉到不一樣的位置,但您不該使用此代碼來告訴搜索引擎爬蟲某個頁面或網站已經移動,由於搜索引擎爬蟲會繼續抓取原有位置並編制索引。

4、4xx 客戶端錯誤

這類的狀態碼錶明瞭客戶端看起來可能發生了錯誤,妨礙了服務器的處理。

400 Bad Request(錯誤請求)

服務器不理解請求的語法。

401 Unauthorized(未受權)

請求要求身份驗證。 對於須要登陸的網頁,服務器可能返回此響應。

403 Forbidden(禁止)

服務器拒絕請求。

404 Not Found(未找到)

服務器找不到請求的資源。 例如,對於服務器上不存在的資源常常會返回此代碼。

405 Method Not Allowed(方法不被容許)

請求中的方法不被容許(HTTP METHOD)。

406 Not Acceptable(不接受)

請求的資源的內容特性沒法知足請求頭中的條件,於是沒法生成響應實體,該請求不可接受。

408 Request Timeout(請求超時)

服務器等候請求時發生超時。

409 Conflict(衝突)

因爲和被請求的資源的當前狀態之間存在衝突,請求沒法完成。

410 Gone(已刪除)

若是請求的資源已永久刪除,服務器就會返回此響應。

411 Length Required(須要有效長度)

服務器不接受不含有效內容長度標頭字段的請求。

412 Precondition Failed(未知足前提條件)

服務器未知足請求者在請求中設置的其中一個前提條件。

413 Request Entity Too Large(請求實體過大)

服務器沒法處理請求,由於請求實體過大,超出服務器的處理能力。

414 Request-URI Too Long(請求的 URI 過長)

請求的 URI(一般爲網址)過長,服務器沒法處理。

415 Unsupported Media Type(不支持的媒體類型)

請求的格式不受請求頁面的支持。

416 Requested Range Not Satisfiable(請求範圍不符合要求)

若是頁面沒法提供請求的範圍,則服務器會返回此狀態代碼。

417 Expectation Failed(未知足指望值)

服務器未知足"Expect"請求頭字段的要求。

429 Too Many Requests(請求太頻繁)

用戶在給定的時間內發送了太多的請求。旨在用於網絡限速。

431 Request Header Fields Too Large(請求頭字段過大)

服務器不肯處理請求,由於一個或多個頭字段過大。

5、5xx 服務器錯誤

這類狀態碼錶明瞭服務器在處理請求的過程當中有錯誤或者異常狀態發生,也有多是服務器意識到以當前的軟硬件資源沒法完成對請求的處理。

500 Internal Server Error(服務器內部錯誤)

服務器遇到錯誤,沒法完成請求。

502 Bad Gateway(錯誤網關)

服務器做爲網關或代理,從上游服務器收到無效響應。

503 Service Unavailable(服務不可用)

服務器目前沒法使用(因爲超載或停機維護)。 一般,這只是暫時狀態。

504 Gateway Timeout(網關超時)

服務器做爲網關或代理,可是沒有及時從上游服務器收到請求。

文中的圖片整理自 http.cat/,內容整理自「維基百科 HTTP 狀態碼」

最後

歡迎留言寫出你家喵星人的品種和你對他的「愛稱」,我很好奇有沒有給本身家貓起名叫 「404」 的小夥伴 😂

歡迎關注 HelloGitHub 公衆號

相關文章
相關標籤/搜索