HTTP協(xié)議 (六) 狀態(tài)碼詳解_第1頁(yè)
HTTP協(xié)議 (六) 狀態(tài)碼詳解_第2頁(yè)
HTTP協(xié)議 (六) 狀態(tài)碼詳解_第3頁(yè)
HTTP協(xié)議 (六) 狀態(tài)碼詳解_第4頁(yè)
HTTP協(xié)議 (六) 狀態(tài)碼詳解_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

HTTP狀態(tài)碼,我都是現(xiàn)查現(xiàn)用。我以前記得幾個(gè)常用的狀態(tài)碼,比如200,302,304,404,503。一般來(lái)說(shuō)我也只需要了解這些常用的狀態(tài)碼就可以了。

如果是做AJAX,REST,網(wǎng)絡(luò)爬蟲(chóng),機(jī)器人等程序。還是需要了解其他狀態(tài)碼。

本文我花了一個(gè)多月的時(shí)間把所有的狀態(tài)碼都總結(jié)了下,內(nèi)容太多,看的時(shí)候麻煩耐心點(diǎn)了。HTTP狀態(tài)碼的學(xué)習(xí)資料到處都有,但是都是理論上講解。

本文介紹HTTP協(xié)議中的HTTP狀態(tài)碼(HTTPStatusCode),會(huì)對(duì)大部分的狀態(tài)碼都進(jìn)行了詳細(xì)的實(shí)例講解。要了解狀態(tài)碼,應(yīng)該在實(shí)例中去理解狀態(tài)碼的意義,否則看了也會(huì)忘記的。用Fiddler工具可以查看HTTPRequest和Response,還可以方便地查看Response中的狀態(tài)碼,如果不熟悉這個(gè)工具,可以先參考【Fiddler教程】為了重現(xiàn)HTTP狀態(tài)碼,本文會(huì)使用FiddlerComposer來(lái)創(chuàng)建“特殊的HTTPRequest”.

可以參考【FiddlerComposer創(chuàng)建和發(fā)送HTTPRequest】

閱讀目錄什么是HTTP狀態(tài)碼狀態(tài)碼分類(lèi)常見(jiàn)的狀態(tài)碼1XX消息2XX成功3XX重定向4XX客戶(hù)端錯(cuò)誤5XX服務(wù)器錯(cuò)誤204NoContent(沒(méi)有內(nèi)容)206

PartialContent(部分內(nèi)容)301MovedPermanently(永久移除)400BadRequest(壞請(qǐng)求)403Forbidden(禁止)405MethodNotAllowed(不允許使用的方法)411LengthRequired(要求長(zhǎng)度指示)413RequestEntityTooLarge(請(qǐng)求實(shí)體太大)414RequestURITooLong(請(qǐng)求URI太長(zhǎng))500InternalServerError(內(nèi)部服務(wù)器錯(cuò)誤)501NotImplemented(未實(shí)現(xiàn))502BadGateway(網(wǎng)關(guān)故障)505HTTPVersionNotSupported(不支持的HTTP版本)

什么是HTTP狀態(tài)碼HTTP狀態(tài)碼的作用是:Web服務(wù)器用來(lái)告訴客戶(hù)端,發(fā)生了什么事。狀態(tài)碼位于HTTPResponse的第一行中,會(huì)返回一個(gè)”三位數(shù)字的狀態(tài)碼“和一個(gè)“狀態(tài)消息”?!比粩?shù)字的狀態(tài)碼“便于程序進(jìn)行處理,“狀態(tài)消息”更便于人理解。

如下圖,

當(dāng)客戶(hù)端請(qǐng)求一個(gè)不存在的URL的時(shí)候,Web服務(wù)器會(huì)返回“HTTP/1.1404NotFound”告訴瀏覽器客戶(hù)端。服務(wù)器無(wú)法找到所請(qǐng)求的URL。狀態(tài)碼分類(lèi)HTTP狀態(tài)碼被分為五大類(lèi),目前我們使用的HTTP協(xié)議版本是1.1,支持以下的狀態(tài)碼。隨著協(xié)議的發(fā)展,HTTP規(guī)范中會(huì)定義更多的狀態(tài)碼。

小技巧:

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

已定義范圍分類(lèi)1XX100-101信息提示2XX200-206成功3XX300-305重定向4XX400-415客戶(hù)端錯(cuò)誤5XX500-505服務(wù)器錯(cuò)誤

常見(jiàn)的狀態(tài)碼一般人只需要了解以下常見(jiàn)的狀態(tài)碼就夠了,如果你想了解更多,請(qǐng)繼續(xù)往下看。200OK服務(wù)器成功處理了請(qǐng)求(這個(gè)是我們見(jiàn)到最多的)301/302MovedPermanently(重定向)請(qǐng)求的URL已移走。Response中應(yīng)該包含一個(gè)LocationURL,說(shuō)明資源現(xiàn)在所處的位置304NotModified(未修改)客戶(hù)的緩存資源是最新的,要客戶(hù)端使用緩存404NotFound未找到資源501InternalServerError服務(wù)器遇到一個(gè)錯(cuò)誤,使其無(wú)法對(duì)請(qǐng)求提供服務(wù)

1XX信息性狀態(tài)碼這些狀態(tài)碼是HTTP1.1引入的。對(duì)于這些狀態(tài)碼的價(jià)值還存在爭(zhēng)論(我個(gè)人從來(lái)沒(méi)見(jiàn)過(guò)這些狀態(tài)碼,也沒(méi)有理解這些狀態(tài)碼。)狀態(tài)碼

狀態(tài)消息

含義

實(shí)例100Continue(繼續(xù))收到了請(qǐng)求的起始部分,客戶(hù)端應(yīng)該繼續(xù)請(qǐng)求

101SwitchingProtocols(切換協(xié)議)服務(wù)器正根據(jù)客戶(hù)端的指示將協(xié)議切換成UpdateHeader列出的協(xié)議

2XX成功狀態(tài)碼客戶(hù)端發(fā)起請(qǐng)求時(shí),這些請(qǐng)求通常都是成功的。服務(wù)器有一組用來(lái)表示成功的狀態(tài)碼,分別對(duì)應(yīng)于不同類(lèi)型的請(qǐng)求。狀態(tài)碼狀態(tài)消息含義實(shí)例200OK服務(wù)器成功處理了請(qǐng)求(這個(gè)是我們見(jiàn)到最多的)

HTTP協(xié)議詳解-200201Created(已創(chuàng)建)對(duì)于那些要服務(wù)器創(chuàng)建對(duì)象的請(qǐng)求來(lái)說(shuō),資源已創(chuàng)建完畢。

202Accepted(已接受)請(qǐng)求已接受,但服務(wù)器尚未處理

203Non-AuthoritativeInformation(非權(quán)威信息)服務(wù)器已將事務(wù)成功處理,只是實(shí)體Header包含的信息不是來(lái)自原始服務(wù)器,而是來(lái)自資源的副本。

204NoContent(沒(méi)有內(nèi)容)Response中包含一些Header和一個(gè)狀態(tài)行,但不包括實(shí)體的主題內(nèi)容(沒(méi)有responsebody)

狀態(tài)碼204205ResetContent(重置內(nèi)容)

另一個(gè)主要用于瀏覽器的代碼。意思是瀏覽器應(yīng)該重置當(dāng)前頁(yè)面上所有的HTML表單。

206PartialContent(部分內(nèi)容)

部分請(qǐng)求成功

狀態(tài)碼206

3XX重定向狀態(tài)碼重定向狀態(tài)碼用來(lái)告訴瀏覽器客戶(hù)端,它們?cè)L問(wèn)的資源已被移動(dòng),Web服務(wù)器發(fā)送一個(gè)重定向狀態(tài)碼和一個(gè)可選的LocationHeader,告訴客戶(hù)端新的資源地址在哪。瀏覽器客戶(hù)端會(huì)自動(dòng)用Location中提供的地址,重新發(fā)送新的Request。這個(gè)過(guò)程對(duì)用戶(hù)來(lái)說(shuō)是透明的。301和302非常相似,

一個(gè)是永久轉(zhuǎn)移,一個(gè)是臨時(shí)轉(zhuǎn)移。

(SEO中,搜索引擎如果碰到301,比如網(wǎng)頁(yè)A用301重定向到網(wǎng)頁(yè)B,搜索引擎可以肯定網(wǎng)頁(yè)A永久性改變地址,就會(huì)把網(wǎng)頁(yè)B當(dāng)做唯一有效目標(biāo))302,303,307是一樣。

這是因?yàn)?02是HTTP1.0定義的,HTTP1.1中使用303,307.同時(shí)又保留了302.

(但在現(xiàn)實(shí)中,我們還是用302,我是沒(méi)見(jiàn)過(guò)303和307)

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

狀態(tài)碼狀態(tài)消息含義實(shí)例300MultipleChoices(多項(xiàng)選擇)

客戶(hù)端請(qǐng)求了實(shí)際指向多個(gè)資源的URL。這個(gè)代碼是和一個(gè)選項(xiàng)列表一起返回的,然后用戶(hù)就可以選擇他希望的選項(xiàng)了

301MovedPermanently(永久移除)請(qǐng)求的URL已移走。Response中應(yīng)該包含一個(gè)LocationURL,說(shuō)明資源現(xiàn)在所處的位置狀態(tài)碼301302Found(已找到)與狀態(tài)碼301類(lèi)似。但這里的移除是臨時(shí)的??蛻?hù)端會(huì)使用Location中給出的URL,重新發(fā)送新的HTTPrequestHTTP協(xié)議詳解-302303

SeeOther(參見(jiàn)其他)類(lèi)似302

304NotModified(未修改)客戶(hù)的緩存資源是最新的,要客戶(hù)端使用緩存HTTP協(xié)議之緩存-304305

UseProxy(使用代理)必須通過(guò)代理訪問(wèn)資源,代理的地址在Response的Location中

306

未使用

這個(gè)狀態(tài)碼當(dāng)前沒(méi)使用

307TemporaryRedirect(臨時(shí)重定向類(lèi)似302

4XX客戶(hù)端錯(cuò)誤狀態(tài)碼有時(shí)客戶(hù)端會(huì)發(fā)送一些服務(wù)器無(wú)法處理的東西,比如格式錯(cuò)誤的Request,或者最常見(jiàn)的是,請(qǐng)求一個(gè)不存在的URL。狀態(tài)碼狀態(tài)消息含義實(shí)例400BadRequest(壞請(qǐng)求)告訴客戶(hù)端,它發(fā)送了一個(gè)錯(cuò)誤的請(qǐng)求。狀態(tài)碼400401Unauthorized(未授權(quán))需要客戶(hù)端對(duì)自己認(rèn)證HTTP協(xié)議之基本認(rèn)證-401402PaymentRequired(要求付款)這個(gè)狀態(tài)還沒(méi)被使用,保留給將來(lái)用

403Forbidden(禁止)請(qǐng)求被服務(wù)器拒絕了狀態(tài)碼403404NotFound(未找到)未找到資源HTTP協(xié)議詳解-404405MethodNotAllowed(不允許使用的方法)不支持該Request的方法。狀態(tài)碼405406NotAcceptable(無(wú)法接受)

407ProxyAuthenticationRequired(要求進(jìn)行代理認(rèn)證)與狀態(tài)碼401類(lèi)似,用于需要進(jìn)行認(rèn)證的代理服務(wù)器HTTP協(xié)議之代理-407408RequestTimeout(請(qǐng)求超時(shí))

如果客戶(hù)端完成請(qǐng)求時(shí)花費(fèi)的時(shí)間太長(zhǎng),服務(wù)器可以回送這個(gè)狀態(tài)碼并關(guān)閉連接

409Conflict(沖突)發(fā)出的請(qǐng)求在資源上造成了一些沖突

410Gone(消失了)服務(wù)器曾經(jīng)有這個(gè)資源,現(xiàn)在沒(méi)有了,與狀態(tài)碼404類(lèi)似

411LengthRequired(要求長(zhǎng)度指示)服務(wù)器要求在Request中包含Content-Length。狀態(tài)碼411412PreconditionFailed(先決條件失?。?/p>

413RequestEntityTooLarge(請(qǐng)求實(shí)體太大)客戶(hù)端發(fā)送的實(shí)體主體部分比服務(wù)器能夠或者希望處理的要大狀態(tài)碼413414RequestURITooLong(請(qǐng)求URI太長(zhǎng))客戶(hù)端發(fā)送的請(qǐng)求所攜帶的URL超過(guò)了服務(wù)器能夠或者希望處理的長(zhǎng)度狀態(tài)碼414415UnsupportedMediaType(不支持的媒體類(lèi)型)服務(wù)器無(wú)法理解或不支持客戶(hù)端所發(fā)送的實(shí)體的內(nèi)容類(lèi)型

416RequestedRangeNotSatisfiable(所請(qǐng)求的范圍未得到滿(mǎn)足)

417ExpectationFailed(無(wú)法滿(mǎn)足期望)

5XX服務(wù)器錯(cuò)誤狀態(tài)碼有時(shí)候客戶(hù)端發(fā)送了一條有效Request,Web服務(wù)器自身卻出錯(cuò)了??赡苁荳eb服務(wù)器運(yùn)行出錯(cuò)了,或者網(wǎng)站都掛了。

5XX就是用來(lái)描述服務(wù)器錯(cuò)誤的。

狀態(tài)碼狀態(tài)消息含義實(shí)例500InternalServerError(內(nèi)部服務(wù)器錯(cuò)誤)服務(wù)器遇到一個(gè)錯(cuò)誤,使其無(wú)法為請(qǐng)求提供服務(wù)狀態(tài)碼500501NotImplemented(未實(shí)現(xiàn))客戶(hù)端發(fā)起的請(qǐng)求超出服務(wù)器的能力范圍(比如,使用了服務(wù)器不支持的請(qǐng)求方法)時(shí),使用此狀態(tài)碼。狀態(tài)碼501502BadGateway(網(wǎng)關(guān)故障)代理使用的服務(wù)器遇到了上游的無(wú)效響應(yīng)狀態(tài)碼502503ServiceUnavailable(未提供此服務(wù))服務(wù)器目前無(wú)法為請(qǐng)求提供服務(wù),但過(guò)一段時(shí)間就可以恢復(fù)服務(wù)

504GatewayTimeout(網(wǎng)關(guān)超時(shí))與狀態(tài)嗎408類(lèi)似,但是響應(yīng)來(lái)自網(wǎng)關(guān)或代理,此網(wǎng)關(guān)或代理在等待另一臺(tái)服務(wù)器的響應(yīng)時(shí)出現(xiàn)了超時(shí)

505HTTPVersionNotSupported(不支持的HTTP版本)服務(wù)器收到的請(qǐng)求使用了它不支持的HTTP協(xié)議版本。有些服務(wù)器不支持HTTP早期的HTTP協(xié)議版本,也不支持太高的協(xié)議版本狀態(tài)碼505

204NoContent(沒(méi)有內(nèi)容)返回的Response中只有一些Header和一個(gè)狀態(tài)行,沒(méi)有實(shí)體的主題內(nèi)容(沒(méi)有responsebody)204狀態(tài)碼的作用在于:1.在不獲取資源的情況下了解資源的情況(比如判斷其類(lèi)型)2.通過(guò)查看Response中的狀態(tài)碼,看看某個(gè)對(duì)象是否存在3.通過(guò)查看Header,測(cè)試資源是否被修改了。實(shí)例:先打開(kāi)Fiddler,然后啟動(dòng)瀏覽器訪問(wèn),

你會(huì)捕獲到很多204

206PartialContent(部分內(nèi)容)206狀態(tài)碼代表服務(wù)器已經(jīng)成功處理了部分GET請(qǐng)求(只有發(fā)送GET方法的request,web服務(wù)器才可能返回206),應(yīng)用場(chǎng)景:1.FlashGet,迅雷或者HTTP下載工具都是使用206狀態(tài)碼來(lái)實(shí)現(xiàn)斷點(diǎn)續(xù)傳2.將以個(gè)大文檔分解為多個(gè)下載段同時(shí)下載比如,在線看視頻

實(shí)例:一些流媒體技術(shù)比如在線視頻,可以邊看邊下載。就是使用206來(lái)實(shí)現(xiàn)的。打開(kāi)Fiddler,然后用瀏覽器打開(kāi)“搜狐視頻中的綠箭俠”

/20121011/n354681393.shtml

然后你在Fiddler中就能看到一堆的2061.瀏覽器發(fā)送一個(gè)Get方法的request.

header中包含Range:bytes=5303296-5336063.(意思就是請(qǐng)求得到5303296-5336063這個(gè)范圍的數(shù)據(jù))。2.Web服務(wù)器返回一個(gè)206的Response.header中包含Content-Range:bytes5303296-5336063/12129376(表明這次返回的內(nèi)容范圍)301MovedPermanently(永久移除)請(qǐng)求的URL已移走。Response中應(yīng)該包含一個(gè)LocationURL,說(shuō)明資源現(xiàn)在所處的位置例如:

1.

瀏覽器客戶(hù)端訪問(wèn)

2.Web服務(wù)器返回Response301,Location=

(告訴客戶(hù)端我們的資源位于這里,)3.瀏覽器客戶(hù)端會(huì)自動(dòng)再發(fā)送一個(gè)Request去訪問(wèn)

400BadRequest(壞請(qǐng)求)發(fā)送的Request中的數(shù)據(jù)有錯(cuò)誤(比如:表單有錯(cuò)誤,Cookie有錯(cuò)誤),

這個(gè)我們也經(jīng)常見(jiàn)到。

實(shí)例:還沒(méi)想到,想到了再貼個(gè)實(shí)例上來(lái)。

403Forbidden(禁止)Web客戶(hù)端發(fā)送的請(qǐng)求被Web服務(wù)器拒絕了,如果服務(wù)器想說(shuō)明為什么拒絕請(qǐng)求,可以包含實(shí)體的主體部分來(lái)對(duì)原因進(jìn)行描述。但這個(gè)狀態(tài)碼通常是服務(wù)器不想說(shuō)明拒絕原因。訪問(wèn)下面的URL,會(huì)被服務(wù)器拒絕.并且返回403狀態(tài)碼/it/u=1791561788,200960144&fm=0&gp=0.jpg

404PagenotFound(請(qǐng)求的資源不存在)這個(gè)大家都懂的,值得一提的是:騰訊把404頁(yè)面做成了“尋找被拐兒童”

405MethodNotAllowed(不允許使用的方法)405是指Web服務(wù)器不支持Request中的方法。我個(gè)人認(rèn)為狀態(tài)碼405MethodNotAllowed和501NotImplemented是一樣的意思。都是不支持Request的方法。(目前我還不知道這兩個(gè)的區(qū)別)實(shí)例:

發(fā)送一個(gè)是trace方法的Request給411LengthRequired(要求長(zhǎng)度指示)服務(wù)器要求在Request中包含Content-Length。當(dāng)瀏覽器使用Post方法,發(fā)送數(shù)據(jù)給Web服務(wù)器時(shí),必須要有Content-Length。這樣Web服務(wù)器才知道你要發(fā)送多少數(shù)據(jù),否則Web服務(wù)器會(huì)返回411狀態(tài)碼實(shí)例:發(fā)送一個(gè)Post方法的Request給.

Request中沒(méi)有Content-Length

413RequestEntityTooLarge(請(qǐng)求實(shí)體太大)作用:客戶(hù)端發(fā)送的實(shí)體主體部分比服務(wù)器能夠或者希望處理的要大。

一般情況下我們看不到這個(gè)狀態(tài)碼。因?yàn)闉g覽器不會(huì)發(fā)送太大的數(shù)據(jù)給網(wǎng)站,但是機(jī)器人可能會(huì)。實(shí)例:用post方法發(fā)送一個(gè)大文件(100MB以上)給414RequestURITooLong(請(qǐng)求URI太長(zhǎng))就是說(shuō)RequestURI太長(zhǎng),一般瀏覽器

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論