自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

HTTP協(xié)議之狀態(tài)碼詳解

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
HTTP狀態(tài)碼的學(xué)習(xí)資料到處都有,但是都是理論上講解。 本文介紹HTTP協(xié)議中的HTTP狀態(tài)碼(HTTP Status Code), 會對大部分的狀態(tài)碼都進行了詳細的實例講解。

HTTP狀態(tài)碼,我都是現(xiàn)查現(xiàn)用。 我以前記得幾個常用的狀態(tài)碼,比如200,302,304,404, 503。 一般來說我也只需要了解這些常用的狀態(tài)碼就可以了。 如果是做AJAX,REST,網(wǎng)絡(luò)爬蟲,機器人等程序。還是需要了解其他狀態(tài)碼。 本文我花了一個多月的時間把所有的狀態(tài)碼都總結(jié)了下,內(nèi)容太多,看的時候麻煩耐心點了。

HTTP狀態(tài)碼的學(xué)習(xí)資料到處都有,但是都是理論上講解。 本文介紹HTTP協(xié)議中的HTTP狀態(tài)碼(HTTP Status Code), 會對大部分的狀態(tài)碼都進行了詳細的實例講解。

要了解狀態(tài)碼,應(yīng)該在實例中去理解狀態(tài)碼的意義,否則看了也會忘記的。

用Fiddler工具可以查看HTTP Request和Response, 還可以方便地查看Response中的狀態(tài)碼, 如果不熟悉這個工具,可以先參考【Fiddler教程】

為了重現(xiàn)HTTP 狀態(tài)碼,本文會使用Fiddler Composer來創(chuàng)建“特殊的HTTP Request”.可以參考【Fiddler Composer創(chuàng)建和發(fā)送HTTP Request】

什么是HTTP狀態(tài)碼

HTTP狀態(tài)碼的作用是:Web服務(wù)器用來告訴客戶端,發(fā)生了什么事。

狀態(tài)碼位于HTTP Response 的***行中,會返回一個”三位數(shù)字的狀態(tài)碼“和一個“狀態(tài)消息”。 ”三位數(shù)字的狀態(tài)碼“便于程序進行處理, “狀態(tài)消息”更便于人理解。

如下圖, 當客戶端請求一個不存在的URL的時候, Web服務(wù)器會返回 “HTTP/1.1 404 Not Found” 告訴瀏覽器客戶端。 服務(wù)器無法找到所請求的URL。

 

 

狀態(tài)碼分類

HTTP狀態(tài)碼被分為五大類, 目前我們使用的HTTP協(xié)議版本是1.1, 支持以下的狀態(tài)碼。隨著協(xié)議的發(fā)展,HTTP規(guī)范中會定義更多的狀態(tài)碼。

小技巧: 假如你看到一個狀態(tài)碼518, 你并不知道具體518是什么意思。 這時候你只要知道518是屬于(5XX,服務(wù)器錯誤就可以了)

狀態(tài)碼分類

常見的狀態(tài)碼

一般人只需要了解以下常見的狀態(tài)碼就夠了, 如果你想了解更多, 請繼續(xù)往下看。

常見的狀態(tài)碼

1XX信息性狀態(tài)碼

這些狀態(tài)碼是HTTP 1.1引入的。 對于這些狀態(tài)碼的價值還存在爭論 (我個人從來沒見過這些狀態(tài)碼, 也沒有理解這些狀態(tài)碼。)

1XX信息性狀態(tài)碼

2XX成功狀態(tài)碼

客戶端發(fā)起請求時, 這些請求通常都是成功的。服務(wù)器有一組用來表示成功的狀態(tài)碼,分別對應(yīng)于不同類型的請求。

2XX成功狀態(tài)碼#p#

3XX重定向狀態(tài)碼

重定向狀態(tài)碼用來告訴瀏覽器客戶端,它們訪問的資源已被移動, Web服務(wù)器發(fā)送一個重定向狀態(tài)碼和一個可選的Location Header, 告訴客戶端新的資源地址在哪。

瀏覽器客戶端會自動用Location中提供的地址,重新發(fā)送新的Request。 這個過程對用戶來說是透明的。

301和302 非常相似, 一個是***轉(zhuǎn)移,一個是臨時轉(zhuǎn)移。

(SEO中,搜索引擎如果碰到301, 比如網(wǎng)頁A用301重定向到網(wǎng)頁B,搜索引擎可以肯定網(wǎng)頁A***性改變地址,就會把網(wǎng)頁B當做***有效目標)

302,303,307 是一樣。 這是因為302是HTTP 1.0定義的, HTTP1.1中使用303,307. 同時又保留了302. (但在現(xiàn)實中,我們還是用302,我是沒見過303和307)

所以這一節(jié), 我們只需要掌握302, 304 就可以了。

3XX重定向狀態(tài)碼

4XX客戶端錯誤狀態(tài)碼

有時客戶端會發(fā)送一些服務(wù)器無法處理的東西,比如格式錯誤的Request, 或者最常見的是, 請求一個不存在的URL。

4XX客戶端錯誤狀態(tài)碼

5XX服務(wù)器錯誤狀態(tài)碼

有時候客戶端發(fā)送了一條有效Request, Web服務(wù)器自身卻出錯了。 可能是Web服務(wù)器運行出錯了, 或者網(wǎng)站都掛了。 5XX就是用來描述服務(wù)器錯誤的。

5XX服務(wù)器錯誤狀態(tài)碼

204 No Content(沒有內(nèi)容)

返回的Response中只有一些Header和一個狀態(tài)行, 沒有實體的主題內(nèi)容(沒有response body)

204狀態(tài)碼的作用在于: 1. 在不獲取資源的情況下了解資源的情況(比如判斷其類型)

2. 通過查看Response中的狀態(tài)碼, 看看某個對象是否存在

3. 通過查看Header, 測試資源是否被修改了。

實例:先打開Fiddler, 然后啟動瀏覽器訪問ditu.google.cn, 你會捕獲到很多204

 

#p#

 

206 Partial Content(部分內(nèi)容)

206狀態(tài)碼代表服務(wù)器已經(jīng)成功處理了部分GET請求(只有發(fā)送GET 方法的request, web服務(wù)器才可能返回206),

應(yīng)用場景:

1. FlashGet, 迅雷或者HTTP下載工具都是使用206狀態(tài)碼來實現(xiàn)斷點續(xù)傳

2. 將以個大文檔分解為多個下載段同時下載 比如,在線看視頻

實例: 一些流媒體技術(shù)比如在線視頻,可以邊看邊下載。 就是使用206來實現(xiàn)的。

打開Fiddler, 然后用瀏覽器打開“搜狐視頻中的綠箭俠” http://tv.sohu.com/20121011/n354681393.shtml 然后你在Fiddler中就能看到一堆的206

1. 瀏覽器發(fā)送一個Get 方法的request. header中包含 Range: bytes=5303296-5336063. (意思就是請求得到5303296-5336063這個范圍的數(shù)據(jù))。

2. Web服務(wù)器返回一個206 的Response. header中包含Content-Range: bytes 5303296-5336063/12129376(表明這次返回的內(nèi)容范圍)

 

 

301 Moved Permanently(***移除)

請求的URL已移走。Response中應(yīng)該包含一個Location URL, 說明資源現(xiàn)在所處的位置

例如: 1. 瀏覽器客戶端訪問 http://map.google.cn

2. Web服務(wù)器返回Response 301,Location=http://titu.google.cn (告訴客戶端我們的資源位于這里, )

3. 瀏覽器客戶端會自動再發(fā)送一個Request 去訪問http://titu.google.cn

 

 

400 Bad Request(壞請求)

發(fā)送的Request中的數(shù)據(jù)有錯誤(比如:表單有錯誤,Cookie有錯誤), 這個我們也經(jīng)常見到。

實例: 還沒想到, 想到了再貼個實例上來。

403 Forbidden(禁止)

Web客戶端發(fā)送的請求被Web服務(wù)器拒絕了, 如果服務(wù)器想說明為什么拒絕請求,可以包含實體的主體部分來對原因進行描述。但這個狀態(tài)碼通常是服務(wù)器不想說明拒絕原因。

訪問下面的URL, 會被服務(wù)器拒絕. 并且返回403狀態(tài)碼

http://t2.baidu.com/it/u=1791561788,200960144&fm=0&gp=0.jpg#p#

404 Page not Found (請求的資源不存在)

這個大家都懂的, 值得一提的是: 騰訊把404頁面做成了“尋找被拐兒童”

 

 

405 Method Not Allowed(不允許使用的方法)

405是指Web服務(wù)器不支持Request中的方法。

我個人認為狀態(tài)碼405Method Not Allowed和501 Not Implemented 是一樣的意思。都是不支持Request的方法。 (目前我還不知道這兩個的區(qū)別)

實例: 發(fā)送一個是trace方法的Request 給www.google.com

 

 

 

 

411 Length Required(要求長度指示)

服務(wù)器要求在Request中包含Content-Length。

當瀏覽器使用Post方法,發(fā)送數(shù)據(jù)給Web服務(wù)器時, 必須要有Content-Length。這樣Web服務(wù)器才知道你要發(fā)送多少數(shù)據(jù),否則Web服務(wù)器會返回411狀態(tài)碼

實例: 發(fā)送一個Post方法的Request 給www.google.com. Request中沒有Content-Length

 

 

 

#p#

 

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

作用:客戶端發(fā)送的實體主體部分比服務(wù)器能夠或者希望處理的要大。 一般情況下我們看不到這個狀態(tài)碼。 因為瀏覽器不會發(fā)送太大的數(shù)據(jù)給網(wǎng)站,但是機器人可能會。

實例: 用post方法發(fā)送一個大文件(100MB以上)給www.google.com

 

 

 

 

414 Request URI Too Long(請求URI太長)

就是說Request URI太長, 一般瀏覽器本身對URI的長度就會有限制,所以不會發(fā)送URI很長的Request. 我們平常是根本看不到414錯誤的。 但是機器人可以發(fā)送很長URI。

例如:我們用Fiddler Composer發(fā)送一個很長的URI給Google, 比如 "www.google.com?q=asdfasdasf.." q=后面的參數(shù)很長。 就可以看到414了

 

 

 

#p#

 

500 Internal Server Error(內(nèi)部服務(wù)器錯誤)

這個太常見了, 我們開發(fā)網(wǎng)站的時候,當我們的程序出錯了時,就會返回500錯誤。

實例:ASP.NET 程序出錯

 

 

 

 

501 Not Implemented(未實現(xiàn))

客戶端發(fā)起的請求超出服務(wù)器的能力范圍(比如,使用了服務(wù)器不支持的請求方法)時,使用此狀態(tài)碼)。 一般的Web服務(wù)器只支持GET和POST方法。

實例: 使用Fiddler Composer 給www.qq.com, 發(fā)送一個OPTIONS 方法的Request. 服務(wù)器就能返回501了。

 

 

 

 

502 Bad Gateway(網(wǎng)關(guān)故障)

代理使用的服務(wù)器遇到了上游的無效響應(yīng)。

Fiddler本身就是代理服務(wù)器。 當我們訪問www.facebook.com,這網(wǎng)站被我們天朝屏蔽了。 所以我們可以得到502

 

 

505 HTTP Version Not Supported(不支持的HTTP版本)

表示W(wǎng)eb服務(wù)器不支持此HTTP協(xié)議的版本。

眾所周知我們現(xiàn)在使用的HTTP協(xié)議版本是HTTP/1.1, 如果我們發(fā)送一個HTTP/2.0 的request 給博客園, 博客園肯定不能支持HTTP/2.0,所以會返回505

想要發(fā)送這樣的request, 可以使用Fiddler工具中的Composer來發(fā)送自定義的request, 如下圖。

 

 

 

 

責(zé)任編輯:林琳 來源: 博客園
相關(guān)推薦

2020-10-23 06:58:48

HTTP狀態(tài)碼服務(wù)器

2019-08-23 06:36:32

2014-06-05 10:21:29

HTTP

2019-02-26 14:43:50

http狀態(tài)碼前端

2019-04-02 08:36:12

2022-06-01 12:00:54

HTTP狀態(tài)碼服務(wù)端

2020-06-28 07:43:45

HTTP401HTTP403服務(wù)器

2024-12-09 08:14:25

2011-08-09 14:08:51

iPhoneHTTP請求協(xié)議

2021-04-14 14:16:58

HttpHttp協(xié)議網(wǎng)絡(luò)協(xié)議

2012-06-13 10:30:02

HTTP451狀態(tài)碼

2022-07-29 07:48:15

HTTP常用狀態(tài)碼

2022-10-11 08:48:08

HTTP狀態(tài)碼瀏覽器

2010-09-17 14:24:00

SIP協(xié)議詳解

2015-03-25 11:47:57

HTTP協(xié)議SessionCookie

2012-09-24 14:09:31

C#網(wǎng)絡(luò)協(xié)議C

2014-10-22 09:36:41

TCPIP

2013-08-12 09:47:41

RIP協(xié)議網(wǎng)絡(luò)協(xié)議

2019-09-17 08:18:19

HTTP網(wǎng)絡(luò)協(xié)議狀態(tài)碼

2017-05-26 10:35:13

前端HTTP
點贊
收藏

51CTO技術(shù)棧公眾號