HTTP狀態碼

HTTP協議版本:1.1  html

Http狀態碼能夠分爲5類瀏覽器

1XX  :用於告知客戶端應當執行的動做緩存

2XX :用於表示各類類型的請求成功安全

3XX :用於告知文件已經轉移,以及後續處理方法服務器

4XX :用於指出客戶端的各類錯誤網站

5XX :用於指出服務端的各類錯誤ui

100 continue(繼續)

該狀態碼告知客戶端已經接受到了他發送過來的初步請求,並要求客戶端將餘下的請求內容發送過來。此後當服務端接收到全部請求時必須發送一個結束繼續請求的迴應。spa

101 switching Protocols(替換協議)

服務端已經理解客戶端的請求,並將經過UPGRADE消息頭告知客戶端採用哪一種協議。當最後經過空行終止此次響應後,服務端也將把協議替換爲UPGRADE消息頭中定義的協議。翻譯

理論上每次使用101狀態都是由於新的協議更加有優點例如經過一個實時同步的協議以更好的傳輸資源.代理

200 OK(成功)

告知客戶端請求成功.

201 created(成功建立)

告知客戶端請求已經被知足,且有一個新的資源生成。新資源的請求地址將會放置在Location消息頭中。服務端的響應應當包含能夠幫助用戶或機構準確獲取指定資源的特徵或地址。服務器必須在返回201狀態碼前生成資源,若是不能馬上生成資源,則應該返回狀態碼202。

202 accepted (請求已經接受)

告知客戶端請求已經接受了,正在處理中。並且服務端不能保證處理必定成功。使用202狀態碼時,服務端在接受到請求後,能夠馬上反饋,而不須要直到結果出現。服務端響應時理論上應當告知客戶端任務的可能執行時間或該任務狀態監控器的指針。

203 Non-Authoritative Information (返回內容不可靠)

告知客戶端響應中反饋的元數據並非直接從最初的服務器獲取,而是使用了本地或第三方機構的緩存。

204 No Content (不須要返回內容)

告知客戶端服務端已經成功處理了請求,且不會返回實體信息。服務端可能會在響應的消息頭中提供新增或更新的元信息。消息頭中的信息應當是和客戶端的請求相呼應的。

因爲204狀態碼禁止響應中存在消息體,因此在響應時消息頭後要直接以空行結尾。

205 Reset Content(重置內容)

告知客戶端請求已經接受且已經成功處理,且應當刷新發出請求的頁面視圖。該響應主要爲了用戶輸入內容後,能夠將結果清晰的反饋給用戶,方便用戶進行下一次輸入。

與204狀態碼相似,響應中禁止出現消息體,因此在響應時消息頭後要直接以空行結尾

206 Partial Content (返回部份內容)

告知客戶端服務器已經處理了對指定資源的某一部分的GET請求。對於該狀態碼,要求客戶端的請求必須包含Range頭部域並告知想要獲取指定資源的哪一部分。最好還包含If-Range頭部域做爲請求條件。對於服務器的響應中必須包含如下消息頭:

1.一個指明返回內容屬於那一部分的Content-Range頭部域或者Content-Type爲multipart/byteranges的多段下載。若是還包含Content-Length頭部域,則他的值應當和消息體中的實際內容長度保持一致。

2.Date日期信息

3.若是是相同的請求則返回200狀態碼,而後給出ETag或Content-Loaction(也能夠一塊兒給)

4.若是當前的響應內容和以前相同請求的響應內容不一致,則須要給出Expires,Cache-Control,Vary(這些內容能夠一塊兒給,也能夠單獨給)

對於If-Range的一個強校驗請求,響應不該包含其餘實體頭;對於If-Range的一個弱校驗請求,響應中禁止包含其餘實體頭。這是爲了不更新頭和實體緩存之間的不一致。不然本次響應必須給出響應狀態碼爲200時的全部實體頭。

假如ETag和Last-Modified不匹配,則客戶端應當禁止將206返回的內容與以前返回的內容合併在一塊兒。

任何不支持緩存Range和Content-Range頭的緩存,禁止緩存狀態碼爲206的響應內容

300 Multiple Choices (多重選擇)

被請求的資源有一系列符合的指向,每一個信息都有本身特定的地址和瀏覽器驅動的商議信息。用戶能夠從這些指向中選擇一個適合的進行重定向。

響應中的應包含一個能幫助用戶或瀏覽器找到指望資源的特徵和地址的列表,除非用戶發出的是一個HEAD請求。實體的格式在Content-Type頭中設置。根據格式和瀏覽器的能力,這個選擇過程能夠自動進行。

若是服務器已經有了一個適合的選擇,那麼它應當將對應的訪問地址放入位置域中,以便瀏覽器自動跳轉。此次響應的結果是容許緩存的,除非指明不須要。

301 Moved Permanently (永久轉移)

 被請求的資源已經永久轉移至新的地址,將來對該資源的任意引用都應該使用本次響應反饋的若干個URI之一。若是可能的話,有地址編輯能力的客戶端應該自動將地址替換爲服務端返回的一個或多個URI。這次響應的結果是容許緩存的,除非指明不須要。

新的訪問URI應該放入本次響應的位置域中。在響應的實體中應當包括指向新URI的超連接和說明,除非請求是HEAD請求。

若是請求不是GET或HEAD,則對於狀態碼爲301的響應,瀏覽器禁止進行自動跳轉,除非已得到了用戶的確認。由於這會改變請求的條件。

注意:對於某些使用了HTTP1.0/的瀏覽器,經過301狀態碼獲取的POST請求會被轉化爲一個GET請求。

302 Found (找到?)

被請求的資源臨時轉移至了一個新的地址,因爲地址以後可能再次發生變化,客戶端應繼續使用舊的地址進行請求。這次請求只有Cache-Control或Expires頭域被使用的狀況下才能容許緩存。

臨時地址應當放在響應的位置域中。響應的實體中應當包含指向新URI的超連接和說明,除非本次請求是HEAD請求。

若是請求不是GET或HEAD,則對於狀態碼爲302的響應,瀏覽器禁止進行自動跳轉,除非已得到了用戶的確認。由於這會改變請求的條件。

303 See Other (其餘選擇)

這次請求的響應能夠在另一個URI上找到,客戶端應當採用GET的方式訪問那個資源。這是爲了容許瀏覽器跳轉至由腳本激活的POST請求獲取的資源。這個新的URI不是原始請求資源的替代者。狀態碼爲303的響應禁止緩存,可是由第一次請求觸發的第二次請求的響應容許緩存。另一個URI應當放入響應的位置域中。響應的實體中應當包含指向新URI的超連接和說明。

304 Not Modified (未修改)

當客戶端帶請求被接受了,可是服務端發現文檔沒有更改過,此時服務端應當發送304狀態碼。304響應禁止包含消息體,而且在頭域後直接以空行結束。

響應必須包含如下頭域:

1.Date,除非服務器沒有時鐘。若是沒有時鐘的服務器也打算遵照這些規則,那麼代理服務器和客戶端能夠自行將Date加入響應頭中,使得緩存邏輯能夠正常運行。

2.ETag,Content-Location(至少包含其中一個),對於原本應當返回200狀態碼的一樣請求時(本次不能返回200,須要返回304)。

3.Expires,Cache-Control,Vary(至少包含其中一個),對於值域和以前相同變量下的響應不一樣時。

若是帶參數的GET是強校驗的,那麼響應不該該包含其餘頭域;若是帶參數的GET是弱校驗的,那麼響應禁止包含其餘頭域。這是爲了不緩存了的實體內容和更新的實體頭信息以前出現不一致。

加入某個狀態碼爲304的響應聲明一個實體內容當前沒有緩存,那麼緩存系統必須忽略這個響應,而後重複發送沒有參數的請求。

若是一個緩存系統接收了一個狀態碼爲304的響應,並打算以此更新當前的緩存實體,那麼緩存系統必須更新這個實體在響應中的全部域值。

305 Use Proxy (使用代理)

被請求的資源必須經過指定的代理才能被訪問。在響應的位置域中給出的是代理服務器的URI。接受者被認爲會不斷重複發送這種須要使用代理的請求。只有原始服務器才能建立狀態碼爲305的響應。

306  (再也不使用)

307 Temporary Redirect (短時間跳轉)

被請求的資源臨時轉移至了一個新的地址,因爲地址以後可能再次發生變化,客戶端應繼續使用舊的地址進行請求。這次請求只有Cache-Control或Expires頭域被使用的狀況下才能容許緩存。

臨時地址應當放在響應的位置域中。響應的實體中應當包含指向新URI的超連接和說明,除非本次請求是HEAD請求。由於許多HTTP/1.1以前的的瀏覽器不能識別307狀態碼,因此在說明中應當包含必要信息以便用戶向新的地址發起請求。

若是請求不是GET或HEAD,則對於狀態碼爲307的響應,瀏覽器禁止進行自動跳轉,除非已得到了用戶的確認。由於這會改變請求的條件。

400 Bad Request (失敗的請求)

由於語法問題,這次請求不能被理解。客戶端應當修改後再從新請求。

401 Unauthorized(未驗證)

這次請求須要用戶驗證。響應中必須包含WWW-authenticate頭域,用於詢問用戶消息。客戶端能夠重複提交一個包含適當Authoriztion頭域的請求。若是請求中已經包含了Authorization證書,那麼在狀態碼爲401的響應表示這些證書被拒絕。若是服務器的響應中包含了與前一個響應相同的身份驗證詢問,且瀏覽器已經至少一次嘗試了驗證,那麼瀏覽器應當將響應中的實體展現出來,由於響應中的信息可能包含了相關的診斷信息。

402 Payment Required(支付)

預留狀態

403 Forbidden(禁止訪問)

服務器已經理解了本次請求,可是不能實現它。無需進行驗證,也無需重複請求。若是請求不是HEAD的話,服務器會在實體中描述拒絕訪問的緣由。若是服務器不打算描述拒絕緣由,那麼應該使用404狀態碼做爲替代。

404 Not Found(未找到)

服務器經過請求中的URI找不到匹配的資源。沒有跡象表示這是暫時的仍是永久的。若是服務器經過某些機制知道資源已經永遠不能使用,且沒有以後的請求地址,那麼應當返回410狀態碼。若是服務器不打算描述請求爲什麼被拒絕,或沒有其餘合適的響應時,會使用狀態碼404.

405 Mehod Not Allowed(方法不容許訪問)

請求中指定的方法不容許訪問請求要求獲取的資源。響應中必須包含能夠獲取該資源的方法列表。

406 Not Acceptable (不能接受)

請求資源的內容特性沒法知足請求頭中的條件,由於不能生成響應實體

響應中應當包含能夠訪問資源的內容特性和位置列表,以便用戶和瀏覽器選擇合適的一個,除非本次請求是HEAD請求。實體的格式在Content-Type頭域中定義。根據格式和瀏覽器的能力,瀏覽器能夠自動做出合適的選擇。可是規範中沒有定義任何做出此類自動選擇的標準。

若是瀏覽器接受的響應的狀態碼爲406,那麼瀏覽器應當終止獲取更多數據的行爲,並詢問用戶應該如何處理。

407 Proxy Authentication Required (代理服務器驗證)

該狀態碼和401類似,可是客戶端必須在代理服務器上進行身份驗證。代理服務器必須返回Proxy-Authenticate頭域,包含一個想代理服務器請求資源的邀請。客戶端應當重複發送有Proxy-Authenicate的請求。

408 Request Time Out(請求超時)

客戶端不能在規定時間內提供一個請求。客戶端過一段時間後應當重複發送一個相同的請求

409 Conflict (衝突)

因爲和資源的當前狀態存在衝突,請求不能被完成。若是服務器認爲用戶能夠處理衝突,且會再次提交時,會發送409狀態碼的響應。響應中應當包含足夠多的信息,幫助用戶發現衝突的緣由。在理想狀況下響應中會包含足夠多的信息幫助用戶和瀏覽器修復問題,然而這是不太可能,且不能指望的。

衝突大部分是由於PUT請求致使的。例如,在採用版本檢查的狀況下,PUT請求中的修改和以前的一個請求出現衝突,此時服務器會給出狀態碼爲409的響應,聲明請求沒法完成。此時,響應實體中應當包含兩個版本中的差別列表,並在Content-Type頭域中給出格式。

410 Gone(丟失)

請求的資源沒法經過服務器拿到,且沒有可供跳轉的地址。這個狀況被認爲是永久的。當客戶端接收到請求後應當刪除這個資源的URI地址。若是服務器不知道或沒法肯定這個情況是永久的,那麼應該使用404狀態碼。該響應容許緩存,出聲明不須要。

410響應主要目的是幫助網站管理人員維護網站,當資源被刪除時接受通知。這類事件在限時,增值服務中很廣泛。一樣,410響應也被用於通知客戶端在當前服務器節點上,本來屬於某我的的資源已經再也不可用。固然是否須要把全部不可用的資源標記爲‘410Gone’,以及保持此標記多久,徹底取決於服務器擁有者。

411 Length Required(須要長度)

服務器拒絕接受請求,由於Content-Length沒有被給出。客戶端須要給出一個可用的Content-Length頭域,內容應該符合請求消息體的長度。

412 Precondition Failed (先決條件錯誤)

服務器沒法驗證經過請求頭域中給出的先決條件。該狀態碼容許客戶端獲取資源時在請求的元信息設置先決條件,以免該請求方法被應用到其餘資源上。

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

服務端拒絕處理客戶端的請求,由於請求實體的大小超過了服務器的處理能力。服務端會關閉這次鏈接,以免客戶端繼續請求。

若是這個狀況是暫時的,服務器應當包含一個Retry-After頭域,聲明這是暫時的,客戶端過一段時間後能夠嘗試再次請求。

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

服務器拒絕處理請求,由於請求URI長度超過了服務器的能夠解析的能力。這種狀況通常出如今:

1.一個POST請求轉爲GET請求,致使查詢字符串過長

2.或者客戶端進入了URI「黑洞」(例如每次重定向都把舊地址做爲新地址的一部分,在若干次重定向後致使URI過長)

3.客戶端正在嘗試利用某些服務器中存在的安全漏洞攻擊服務器。這類服務器使用固定長度的緩衝讀取或操做URI,當GET後的參數超過某個數值後,可能會產生緩衝溢出,致使任意代碼被執行。沒有此類漏洞的服務器可返回414狀態碼

415 Unsupported Media Type(請求格式錯誤)

對於請求的資源和請求的方法,請求實體的格式不是服務所支持的格式,因此服務器拒絕請求

416 Request Range Not Satisfiable (請求範圍錯誤)

若是請求中包含Range請求頭域,而且range中指定的的數據範圍和現有的數據資源不匹配,同時請求中沒有包含If-Range請求頭,那麼服務器就應當返回416狀態碼。

若是這個狀態碼被返回給一個byte-range請求,那麼響應中應當包含Content-Range實體頭域指明當前資源的長度範圍。該響應禁止使用mutipart/byteranges做爲其Content-Type

417 Exceptation Failed (預期錯誤)

在Except請求域給出的內容不能被服務器知足。或者這個服務器是一個代理服務器,它有明顯的的證據證實在當前路由的下一個節點上Except中的內容沒法被知足.

500 Internal Server Error (服務器錯誤)

服務器遇到了一個沒法預料的錯誤,致使沒法完成請求

501 Not Implemented(服務器不支持該功能)

服務器不支持當前請求所須要的某個功能。此狀態碼在服務器沒法識別請求的方法,且沒法支持其對資源的任何請求

502 Bad Gateway (錯誤的網關)

扮演網關或代理服務器的服務器,接受到了一個來自上游服務的錯誤響應。

503 Service Unavailable (服務器沒法服務)

服務器當前沒法處理請求,多是臨時出現負載或者正在進行維護。該狀態碼暗示這是一個臨時的狀態,過一下子可能就會恢復正常。若是知道問題的持續時間,在響應中會給出Retry-After請求頭。若是沒有給出Retry-After請求頭,那麼給出狀態500的狀態碼更加合適。

注意:503狀態碼並非暗示服務必定處於負載的狀態,有時服務器只是想簡單的拒絕訪問。

504 Gateway Timeout(網關超時)

扮演網關和代理服務器不能及時獲取上游服務器(URI標示出的服務器,例如HTTP,FTP,LDAP)或者輔助服務器(如CDN)的響應。

注意:某些代理服務器在CDN查詢超時時會返回400或500狀態碼

505 Http Version Not Supported(當前Http協議版本不支持)

服務器不支持或拒絕支持請求中使用的HTTP版本。這暗示服務器不能或者不肯更改HTTP版本以和客戶端保持一致。在響應中應當包含一個實體描述不支持該版本的緣由,以及該服務器支持哪些HTTP版本。

 

參考中文翻譯地址:https://zh.wikipedia.org/wiki/HTTP%E7%8A%B6%E6%80%81%E7%A0%81

參考英文原版地址:https://tools.ietf.org/html/rfc2616#page-70

相關文章
相關標籤/搜索