HTTP狀態碼

HTTP 響應狀態代碼指示特定的 HTTP 請求是否已成功完成。響應分爲五類:信息響應,成功響應,重定向,客戶端錯誤和服務器錯誤。狀態碼由 RFC 2616 的第10部分定義。

100 Continue

HTTP 100 Continue信息狀態響應代碼表明目前爲止的所有內容都是正常的,並且客戶端應該繼續請求或者如果它已經完成則忽略它。

要讓服務器檢查請求的標題,客戶端必須在其初始請求中發送Expect: 100-continue標題,並且在發送主體之前接收100 Continue狀態碼作爲響應。

101 Switching Protocols

HTTP 101 Switching Protocols響應代碼指示服務器正在根據發送包括Upgrade請求頭的消息的客戶端的請求切換到的協議。

服務器在此響應中包含一個Upgrade響應標題,指示它切換到的協議。該過程在文章“協議升級機制”中有詳細描述。

200 OK

HTTP 200 OK成功狀態響應碼指示請求已成功。200響應默認是可緩存的。

成功的意義取決於 HTTP 請求方法:

  • GET:資源已被提取並在消息體中傳輸。
  • HEAD:實體標題在消息體中。
  • POST:描述行爲結果的資源在消息體中傳輸。
  • TRACE:消息正文包含服務器收到的請求消息。

一個成功的結果PUT還是DELETE往往不是一個200 OK而是一個204 No Content(或201 Created當資源被上傳的第一次)。

201 Created

HTTP 201 Created成功狀態響應代碼指示請求已成功並導致創建資源。在回覆此響應之前有效創建新資源。並且新資源返回到消息正文中,其位置是請求的URL或Location標題的內容。

這個狀態碼的常見用例是一個PUT請求的結果。

202 Accepted

HTTP 202 Accepted響應狀態碼指示該請求已被接收但尚未起作用。它是非承諾的,這意味着HTTP中沒有辦法稍後發送指示處理請求結果的異步響應。它適用於其他進程或服務器處理請求或批處理的情況。

203 Non-Authoritative Information

HTTP 203 Non-Authoritative Information響應狀態表明請求已成功,但封裝的有效負載已由源服務器的200OK)響應由變換代理修改

203響應是相似的值214,這意味着Transformation Applied所述的,Warning標題代碼,其具有可應用於與任何狀態碼的響應的附加優點。

204 No Content

HTTP 204 No Content成功狀態響應代碼指示請求已成功,但客戶端無需離開其當前頁面。204響應默認是可緩存的。的ETag報頭被包括在這樣的響應。

常見用例是204作爲PUT請求的結果返回,更新資源,而不更改向用戶顯示的頁面的當前內容。如果資源已創建,201 Created則返回。如果頁面應該更改爲新更新的頁面,則200應該使用該頁面。

205 Reset Content

HTTP 205 Reset Content響應狀態通知客戶端重置文檔視圖,例如清除表單內容,重置畫布狀態或刷新 UI。

206 Partial Content

HTTP 206 Partial Content成功狀態響應代碼指示請求已成功並且主體包含所請求的數據範圍,如Range請求標題中所述。

如果只有一個範圍,則整個響應Content-Type設置爲文檔的類型,並提供一個Content-Range

如果發送了幾個範圍,則Content-Type設置爲multipart/byteranges並且每個片段都覆蓋一個範圍,並且使用Content-RangeContent-Type對其進行描述。

300 Multiple Choices

HTTP 300 Multiple Choices重定向狀態響應代碼指示該請求具有多個可能的響應。用戶代理或用戶應該選擇其中的一個。由於沒有選擇其中一個響應的標準方式,因此此響應代碼很少使用。

如果服務器有Location首選項,它應該生成一個標題。

301 Moved Permanently

HTTP 301 Moved Permanently重定向狀態響應代碼指示所請求的資源已明確移動到Location標題給定的URL 。瀏覽器重定向到這個頁面,搜索引擎更新它們到資源的鏈接(在 SEO 中,據說鏈接汁被髮送到新的 URL)。

即使規範要求方法和主體在執行重定向時不會被更改,但並非所有的用戶代理都與它一致,並且您仍然可以在那裏找到有問題的軟件。因此,建議301代碼僅作爲響應GETHEAD方法,並使用308 Permanent Redirect代替方法,因爲方法更改在此狀態下被明確禁止。

302 Found

HTTP 302 Found重定向狀態響應代碼指示所請求的資源已暫時移動到由Location標題給定的 URL 。瀏覽器重定向到這個頁面,但是搜索引擎不會更新他們到資源的鏈接(在 SEO 中,據說鏈接果汁不會被髮送到新的 URL)。

即使規範要求方法和主體在執行重定向時不要被更改,但並非所有用戶代理都符合此處,並且您仍然可以在此找到有問題的軟件。因此,建議設置302代碼僅作爲一個響應GETHEAD方法和使用307 Temporary Redirect代替,作爲該方法的變化被明確地禁止在這種情況下。

在你想要改變方法的情況下,改爲GET使用303 See Also。當你想給一個PUT不是上傳資源的方法,而是一個確認信息(比如“你成功上傳了 XYZ”)時,這很有用。

303 See Other

HTTP 303 See Other重定向狀態響應代碼(通常作爲一個 PUTPOST操作的結果發回)表示重定向不鏈接到新上載的資源,而是鏈接到其他頁面,如確認頁面或上載進度頁面。用於顯示此重定向頁面的方法始終是GET

304 Not Modified

HTTP 304 Not Modified客戶端重定向響應代碼指示不需要重新傳輸請求的資源。這是對緩存資源的隱式重定向。這發生在請求方法是安全的時候,比如一個 GET或者一個HEAD請求,或者當請求是有條件的並且使用一個 If-None-Match或者一個If-Modified-Since標頭時。

等效200 OK響應會包括頭Cache-ControlContent-LocationDateETagExpires,和Vary

許多開發人員工具的瀏覽器網絡面板會產生無關的請求,導致304響應,因此開發人員可以看到對本地緩存的訪問。

307 Temporary Redirect

HTTP 307 Temporary Redirect重定向狀態響應代碼指示所請求的資源已暫時移動到由Location標題給定的 URL 。

原始請求的方法和主體被重用來執行重定向的請求。在你想要改變方法的情況下,改爲GET使用303 See Other。當你想給一個PUT不是上傳資源的方法,而是一個確認信息(如“你成功上傳 XYZ”)時,這很有用。

307302之間的唯一區別在於307該方法和主體將不會被重定向的請求時改變保證。使用302,一些老客戶錯誤地將方法改變爲GET:使用非GET方法的行爲,然後302在Web上不可預知,而使用307的行爲則是可預測的。對於GET請求,它們的行爲是相同的。

308 Permanent Redirect

HTTP 308 Permanent Redirect重定向狀態響應代碼指示所請求的資源已明確移動到Location標題給定的 URL 。瀏覽器重定向到這個頁面,搜索引擎更新它們到資源的鏈接(在 SEO 中,據說鏈接汁被髮送到新的 URL)。

請求方法和主體不會被更改,301但有時可能會被錯誤地更改爲GET方法。

一些 Web 應用程序可能會以非標準方式使用308 Permanent Redirect並用於其他目的。例如,Google 雲端硬盤使用308 Resume Incomplete響應來向客戶端指示上傳不完整的時間。

400 Bad Request

由於語法無效,HTTP400 Bad Request 響應狀態碼指示服務器無法理解請求。客戶不應未經修改就重複此請求。

401 Unauthorized

HTTP 401 Unauthorized客戶端錯誤狀態響應代碼指示該請求尚未應用,因爲它缺少目標資源的有效認證憑證。

此狀態與包含有關如何正確授權信息的WWW-Authenticate標頭一起發送。

這種狀態與此類似403,但在這種情況下,身份驗證是可能的。

403 Forbidden

HTTP 403 Forbidden客戶端錯誤狀態響應代碼指示服務器理解請求但拒絕授權。

這種狀態與此類似401,但在這種情況下,重新認證將不會產生任何影響。訪問是永久禁止的並且與應用程序邏輯相關聯(如不正確的密碼)。

404 Not Found

HTTP 404 Not Found客戶端錯誤響應代碼指示服務器找不到請求的資源。導致404頁面的鏈接通常被稱爲斷開或死鏈接,並且可能受到鏈接形勢變化的影響。

404狀態代碼不表示資源是暫時還是永久缺失。但是,如果資源被永久刪除,410應該使用(Gone)而不是404狀態。

405 Method Not Allowed

HTTP 405 Method Not Allowed響應狀態碼指示服務器已知請求方法,但已被禁用且無法使用。這兩個強制性方法,GETHEAD,絕不能被禁用,不應返回該錯誤代碼。

406 Not Acceptable

HTTP 406 Not Acceptable客戶端錯誤響應代碼指示與在其中定義Accept-CharsetAccept-Language不能提供的可接受值列表匹配的響應。

事實上,這個錯誤很少被使用:服務器不是使用這個對最終用戶來說很模糊的錯誤代碼(而且很難修復)進行響應,而是忽略相關頭文件並向用戶提供實際頁面。假定即使用戶不會完全開心,它也會更喜歡這個錯誤代碼。

如果服務器返回這種錯誤狀態,則消息正文應包含資源可用表示的列表,允許在其中手動進行選擇。

407 Proxy Authentication Required

HTTP 407 Proxy Authentication Required 客戶端錯誤狀態響應代碼指示該請求尚未應用,因爲它缺少瀏覽器和可訪問所請求資源的服務器之間的代理服務器的有效認證憑證。

此狀態與包含有關如何正確授權信息的Proxy-Authenticate標頭一起發送。

408 Request Timeout

HTTP 408 Request Timeout響應狀態碼意味着服務器想要關閉這個未使用的連接。它由一些服務器在空閒連接上發送,即使客戶端沒有任何先前的請求

服務器應該在響應中發送“close”Connection 標題字段,因爲408意味着服務器決定關閉連接而不是繼續等待。

由於Chrome,Firefox 27+或 IE9 等瀏覽器使用 HTTP 預連接機制加快瀏覽速度,因此使用此響應的次數更多。另請注意,某些服務器僅在不發送此消息的情況下關閉連接。

409 Conflict

HTTP 409 Conflict響應狀態碼指示與服務器當前狀態的請求衝突。

衝突最有可能發生以迴應PUT請求。例如,在上傳比服務器上已存在的文件更早的文件時,您可能會收到409響應,從而導致版本控制衝突。

410 Gone

HTTP 410 Gone客戶端錯誤響應代碼指示對源服務器不再可用對目標資源的訪問,並且此情況可能是永久性的。

如果您不知道這種缺失是暫時的還是永久性的,404應該使用狀態代碼。

410響應默認是可緩存的。

411 Length Required

HTTP 411 Length Required客戶端錯誤響應代碼指示服務器在沒有定義的Content-Length頭部的情況下拒絕接受請求。

請注意,根據規範,在一系列塊中發送數據時,Content-Length頭部將被忽略,並且在每個塊的開始處,您需要以十六進制格式添加當前塊的長度。查看Transfer-Encoding更多細節。

412 Precondition Failed

HTTP 412 Precondition Failed客戶端錯誤響應代碼指示對目標資源的訪問已被拒絕。這種情況與上比其他方法條件請求GET或者HEAD當被定義的條件If-Unmodified-SinceIf-None-Match頭部不被滿足。在這種情況下,無法進行請求(通常是上載或修改資源),並且發送此錯誤響應。

413 Payload Too Large

HTTP 413 Payload Too Large響應狀態碼指示請求實體大於服務器定義的限制; 服務器可能會關閉連接或返回一個Retry-After標題字段。

414 URI Too Long

HTTP 414 URI Too Long響應狀態碼指示客戶端請求的 URI 比服務器願意解釋的更長。

發生這種情況時有一些罕見的情況:

  • 當客戶不正確地將POST請求轉換爲GET具有長查詢信息的請求時,
  • 當客戶端已經下降到重定向循環(例如,指向其自身後綴的重定向 URI 前綴)時,
  • 或者當服務器受到試圖利用潛在安全漏洞的客戶端的攻擊時。

415 Unsupported Media Type

HTTP 415 Unsupported Media Type客戶端錯誤響應代碼指示服務器拒絕接受請求,因爲有效內容格式的格式不受支持。

格式問題可能是由於請求的指示Content-TypeContent-Encoding由於直接檢查數據所致。

416 Range Not Satisfiable

HTTP 416 Range Not Satisfiable錯誤響應代碼指示服務器無法提供請求的範圍。最可能的原因是文檔不包含這樣的範圍,或者Range標題值雖然在語法上是正確的,但是沒有意義。

416響應消息包含Content-Range指示不滿意範圍(即一個'*'),後跟一個'/'和資源的電流。例如Content-Range: */12777

面對這個錯誤,瀏覽器通常會中止操作(例如,下載將被視爲不可恢復)或者再次請求整個文檔。

417 Expectation Failed

HTTP 417 Expectation Failed客戶端錯誤響應代碼指示Expect無法滿足請求標頭中給出的期望值。

查看Expect標題了解更多詳情。

426 Upgrade Required

HTTP 426 Upgrade Required客戶端錯誤響應代碼指示服務器拒絕使用當前協議執行請求,但可能在客戶端升級到其他協議後願意這樣做。

服務器發送一個Upgrade包含此響應的頭部以指示所需的協議。

428 Precondition Required

HTTP 428 Precondition Required響應狀態碼指示服務器要求有條件的請求。

通常,這意味着所需的先決條件頭,如If-Match缺少

當前提條件頭與服務器端狀態不匹配時,響應應該是412 Precondition Failed

429 Too Many Requests

HTTP 429 Too Many Requests響應狀態碼指示用戶在給定時間內發送了太多請求(“限速”)。

一個Retry-After標題可能包括該回復表示多久作出新的請求前等待。

431 Request Header Fields Too Large

HTTP 431 Request Header Fields Too Large響應狀態碼指示服務器不願意處理請求,因爲它的頭部字段太大。請求可以在減少請求頭域的大小後重新提交。

它可以在請求頭字段的總數太大或單個頭字段太大時使用。

這個錯誤不應該發生在經過良好測試的生產系統上,但在測試新系統時可以更頻繁地發現。

451 Unavailable For Legal Reasons

HTTP 451 Unavailable For Legal Reasons客戶端錯誤響應代碼指示用戶請求由於法律原因而不可用的資源,例如已發出法律行爲的網頁。

500 Internal Server Error

HTTP 500 Internal Server Error服務器錯誤響應代碼指示服務器遇到阻止它履行請求的意外情況。

這個錯誤響應是一個通用的“全部”響應。通常情況下,服務器管理員會記錄諸如500狀態碼之類的錯誤響應,並提供有關請求的更多詳細信息以防止未來再次發生錯誤。

501 Not Implemented

HTTP 501 Not Implemented服務器錯誤響應代碼指示請求方法不受服務器支持並且無法處理。服務器需要支持的唯一方法(因此不能返回此代碼)是GETHEAD

請注意,501錯誤不是您可以解決的問題,但需要您嘗試訪問的Web服務器進行修復。

501響應默認是可緩存的。

502 Bad Gateway

HTTP 502 Bad Gateway服務器錯誤響應代碼指示服務器充當網關或代理時收到來自上游服務器的無效響應。

網關——可能指的是網絡中的不同事物,502錯誤通常不是您可以解決的問題,但需要Web服務器或代理你試圖通過訪問。

503 Service Unavailable

HTTP 503 Service Unavailable服務器錯誤響應代碼指示服務器尚未準備好處理請求。

常見原因是服務器因維護或重載而停機。請注意,與此響應一起,應發送解釋問題的用戶友好頁面。這個響應應該用於臨時條件Retry-After,如果可能,HTTP 頭應該包含服務恢復的估計時間。

與此響應一起發送的與緩存相關的頭文件應予以處理,因爲503狀態通常是臨時條件,通常不應緩存響應。

504 Gateway Timeout

HTTP 504 Gateway Timeout服務器錯誤響應代碼指示服務器充當網關或代理時無法及時得到響應。

網關——可能指網絡中的不同事物,並且504錯誤通常不是您可以解決的問題,但需要通過網絡服務器或代理你試圖通過訪問。

505 HTTP Version Not Supported

HTTP 505 HTTP Version Not Supported響應狀態碼指示服務器不支持請求中使用的 HTTP 版本。

511 Network Authentication Required

HTTP 511 Network Authentication Required響應狀態碼指示客戶端需要進行身份驗證才能獲得網絡訪問權限。

這種狀態不是由原始服務器生成的,而是通過攔截代理來控制對網絡的訪問。

網絡運營商在授予訪問權限之前(例如在網吧或機場)有時需要一些認證,接受條款或其他用戶互動。他們通常使用媒體訪問控制(MAC)地址識別尚未這樣做的客戶。

參考:https://cloud.tencent.com/developer/chapter/13553

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章