HTTP狀态碼被分為五大類, 目前我們使用的HTTP協定版本是1.1, 支援以下的狀态碼。随着協定的發展,HTTP規範中會定義更多的狀态碼。
小技巧: 假如你看到一個狀态碼518, 你并不知道具體518是什麼意思。 這時候你隻要知道518是屬于(5XX,伺服器錯誤就可以了)
類型 已定義範圍 分類
1XX 100-101 資訊提示
2XX 200-206 成功
3XX 300-305 重定向
4XX 400-415 用戶端錯誤
5XX 500-505 伺服器錯誤
常見的狀态碼
一般人隻需要了解以下常見的狀态碼就夠了, 如果你想了解更多, 請繼續往下看。
200 OK 伺服器成功處理了請求(這個是我們見到最多的)
301/302 Moved Permanently(重定向)/302 Found 請求的URL已移走。Response中應該包含一個Location URL, 說明資源現在所處的位置
304 Not Modified(未修改)客戶的緩存資源是最新的, 要用戶端使用緩存
404 Not Found 未找到資源
501 Internal Server Error伺服器遇到一個錯誤,使其無法對請求提供服務
1XX 資訊性狀态碼
這些狀态碼是HTTP 1.1引入的。 對于這些狀态碼的價值還存在争論 (我個人從來沒見過這些狀态碼, 也沒有了解這些狀态碼。)
狀态碼 狀态消息 含義 執行個體
100 Continue(繼續) 收到了請求的起始部分,用戶端應該繼續請求
101 Switching Protocols(切換協定) 伺服器正根據用戶端的訓示将協定切換成Update Header列出的協定
2XX 成功狀态碼
用戶端發起請求時, 這些請求通常都是成功的。伺服器有一組用來表示成功的狀态碼,分别對應于不同類型的請求。
狀态碼 狀态消息 含義 執行個體
200 OK 伺服器成功處理了請求(這個是我們見到最多的) HTTP協定詳解-200
201 Created(已建立) 對于那些要伺服器建立對象的請求來說,資源已建立完畢。
202 Accepted(已接受) 請求已接受, 但伺服器尚未處理
203 Non-Authoritative Information(非權威資訊) 伺服器已将事務成功處理,隻是實體Header包含的資訊不是來自原始伺服器,而是來自資源的副本。
204 No Content(沒有内容) Response中包含一些Header和一個狀态行, 但不包括實體的主題内容(沒有response body) 狀态碼204
205 Reset Content(重置内容) 另一個主要用于浏覽器的代碼。意思是浏覽器應該重置目前頁面上所有的HTML表單。
206 Partial Content(部分内容) 部分請求成功 狀态碼206
3XX 重定向狀态碼
重定向狀态碼用來告訴浏覽器用戶端,它們通路的資源已被移動, Web伺服器發送一個重定向狀态碼和一個可選的Location Header, 告訴用戶端新的資源位址在哪。
浏覽器用戶端會自動用Location中提供的位址,重新發送新的Request。 這個過程對使用者來說是透明的。
301和302 非常相似, 一個是永久轉移,一個是臨時轉移。
302,303,307 是一樣。 這是因為302是HTTP 1.0定義的, HTTP1.1中使用303,307. 同時又保留了302. (但在現實中,我們還是用302,我是沒見過303和307)
300 Multiple Choices(多項選擇) 用戶端請求了實際指向多個資源的URL。這個代碼是和一個選項清單一起傳回的,然後使用者就可以選擇他希望的選項了
301 Moved Permanently(永久移除) 請求的URL已移走。Response中應該包含一個Location URL, 說明資源現在所處的位置 狀态碼301
302 Found(已找到) 與狀态碼301類似。但這裡的移除是臨時的。 用戶端會使用Location中給出的URL,重新發送新的HTTP request
303 See Other(參見其他) 類似302
304 Not Modified(未修改) 客戶的緩存資源是最新的, 要用戶端使用緩存 HTTP協定之緩存-304
305 Use Proxy(使用代理) 必須通過代理通路資源, 代理的位址在Response 的Location中
306 未使用 這個狀态碼目前沒使用
307 Temporary Redirect(臨時重定向 類似302
4XX用戶端錯誤狀态碼
有時用戶端會發送一些伺服器無法處理的東西,比如格式錯誤的Request, 或者最常見的是, 請求一個不存在的URL。
400 Bad Request(壞請求) 告訴用戶端,它發送了一個錯誤的請求。
401 Unauthorized(未授權) 需要用戶端對自己認證
402 Payment Required(要求付款) 這個狀态還沒被使用, 保留給将來用
403 Forbidden(禁止) 請求被伺服器拒絕了
404 Not Found(未找到) 未找到資源
405 Method Not Allowed(不允許使用的方法) 不支援該Request的方法。
406 Not Acceptable(無法接受)
407 Proxy Authentication Required(要求進行代理認證) 與狀态碼401類似, 用于需要進行認證的代理伺服器
408 Request Timeout(請求逾時) 如果用戶端完成請求時花費的時間太長, 伺服器可以回送這個狀态碼并關閉連接配接
409 Conflict(沖突) 發出的請求在資源上造成了一些沖突
410 Gone(消失了) 伺服器曾經有這個資源,現在沒有了, 與狀态碼404類似
411 Length Required(要求長度訓示) 伺服器要求在Request中包含Content-Length。
412 Precondition Failed(先決條件失敗)
413 Request Entity Too Large(請求實體太大) 用戶端發送的實體主體部分比伺服器能夠或者希望處理的要大
414 Request URI Too Long(請求URI太長) 用戶端發送的請求所攜帶的URL超過了伺服器能夠或者希望處理的長度
415 Unsupported Media Type(不支援的媒體類型) 伺服器無法了解或不支援用戶端所發送的實體的内容類型
416 Requested Range Not Satisfiable(所請求的範圍未得到滿足)
417 Expectation Failed(無法滿足期望)
5XX伺服器錯誤狀态碼
有時候用戶端發送了一條有效Request, Web伺服器自身卻出錯了。 可能是Web伺服器運作出錯了, 或者網站都挂了。 5XX就是用來描述伺服器錯誤的。
500 Internal Server Error(内部伺服器錯誤) 伺服器遇到一個錯誤,使其無法為請求提供服務 狀态碼500
501 Not Implemented(未實作) 用戶端發起的請求超出伺服器的能力範圍(比如,使用了伺服器不支援的請求方法)時,使用此狀态碼。
502 Bad Gateway(網關故障) 代理使用的伺服器遇到了上遊的無效響應
503 Service Unavailable(未提供此服務) 伺服器目前無法為請求提供服務,但過一段時間就可以恢複服務
504 Gateway Timeout(網關逾時) 與狀态嗎408類似, 但是響應來自網關或代理,此網關或代理在等待另一台伺服器的響應時出現了逾時
505 HTTP Version Not Supported(不支援的HTTP版本) 伺服器收到的請求使用了它不支援的HTTP協定版本。 有些伺服器不支援HTTP早期的HTTP協定版本,也不支援太高的協定版本
列舉執行個體
1)
301 Moved Permanently(永久移除)
請求的URL已移走。Response中應該包含一個Location URL, 說明資源現在所處的位置
例如: 1. 浏覽器用戶端通路 hebinpark.com
2. Web伺服器傳回Response 301,Location: http://www.hablue.com/ (告訴用戶端我們的資源位于這裡, )
3. 浏覽器用戶端會自動再發送一個Request 去通路http://www.hablue.com/
2)
500 Internal Server Error(内部伺服器錯誤)
這個太常見了, 我們開發網站的時候,當我們的程式出錯了時,就會傳回500錯誤。
執行個體:ASP.NET 程式出錯
3)
302 Found 臨時重定向
curl www.baidu.com/scascsaca -I
HTTP/1.1 302 Found
Date: Tue, 24 Feb 2015 14:06:03 GMT
Server: Apache
Location: http://www.baidu.com/search/error.html
Cache-Control: max-age=86400
Expires: Wed, 25 Feb 2015 14:06:03 GMT
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
X-Pad: avoid browser bug
百度其實把404 not found 這一類使用者請求不到的頁面重新指向了http://www.baidu.com/search/error.html這個頁面,這個就屬于臨時重定向.