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

下載本文檔

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

文檔簡介

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

如果是做AJAX,REST,網(wǎng)絡(luò)爬蟲,機(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ì)對大部分的狀態(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來創(chuàng)建“特殊的HTTPRequest”.

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

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

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

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

如下圖,

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

小技巧:

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

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

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

1XX信息性狀態(tài)碼這些狀態(tài)碼是HTTP1.1引入的。對于這些狀態(tài)碼的價(jià)值還存在爭論(我個(gè)人從來沒見過這些狀態(tài)碼,也沒有理解這些狀態(tài)碼。)狀態(tài)碼

狀態(tài)消息

含義

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

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

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

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

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

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

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

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

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

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

部分請求成功

狀態(tài)碼206

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

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

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

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

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

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

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

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

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

SeeOther(參見其他)類似302

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

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

306

未使用

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

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

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

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

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

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

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

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

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

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

416RequestedRangeNotSatisfiable(所請求的范圍未得到滿足)

417ExpectationFailed(無法滿足期望)

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

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

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

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

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

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

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

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

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

/20121011/n354681393.shtml

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

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

1.

瀏覽器客戶端訪問

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

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

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

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

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

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

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

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

發(fā)送一個(gè)是trace方法的Request給411LengthRequired(要求長度指示)服務(wù)器要求在Request中包含Content-Length。當(dāng)瀏覽器使用Post方法,發(fā)送數(shù)據(jù)給Web服務(wù)器時(shí),必須要有Content-Length。這樣Web

溫馨提示

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

評論

0/150

提交評論