前言
本文為〈HTTP - MDN Web docs〉的學習筆記。
狀態碼
HTTP 響應狀態代碼指示特定的 HTTP 請求是否已成功完成,分為以下五類:
- 訊息響應(100 – 199)
- 成功響應(200 – 299)
- 重定向(300 – 399)
- 客戶端錯誤(400 – 499)
- 伺服器錯誤(500 – 599)
訊息響應(Information responses)
100 Continue
此臨時響應指示到目前為止一切正常,客戶端應繼續該請求,如果請求已完成,則忽略響應。
101 Switching Protocol
發送此代碼是為了響應來自客戶端的 Upgrade 請求標頭,並指示伺服器要切換到的協議。
102 Processing (WebDAV)
此代碼表示伺服器已接收並正在處理請求,但是尚無響應。
103 Early Hints
此狀態代碼主要用於 Link 頭,使用戶代理在伺服準備響應時開始預加載資源。
成功響應(Successful responses)
200 OK
該請求已成功,成功的含義取決於 HTTP 方法:
- GET:資源已被獲取並在消息正文中傳輸。
- HEAD:實體標題位於消息正文中。
- PUT 或 POST:描述操作結果的資源在消息正文中傳輸。
- TRACE:消息正文包含伺服接收到的請求消息。
201 Created
請求成功,並因此創建了新資源。這通常是在 POST 請求或某些 PUT 請求之後發送的響應。
202 Accepted
伺服器已接受請求,但尚未處理。最終該請求可能會也可能不會被執行,並且可能在處理發生時被禁止。
203 Non-Authoritative Information
此響應代碼表示返回的後設資料與原始伺服提供的後設資料不完全相同,而是從本地或第三方副本中收集的。這主要用於其他資源的鏡像或備份。除該特定情況外,「200 OK」響應優先於此狀態。
204 No Content
沒有要發送的內容,但標頭可能有用。用戶代理可以使用新的代理更新該資源的快取頭。
205 Reset Content
告訴用戶代理重置發送此請求的文件。
206 Partial Content
從客戶端發送 Range 標頭僅請求資源的一部分時,將使用此響應代碼。
207 Multi-Status (WebDAV)
在可能需要多個狀態代碼的情況下,傳達有關多種資源的信息。
208 Already Reported (WebDAV)
在 dav:propstat 響應元素中使用,以避免重複枚舉與同一集合的多個綁定的內部成員。
226 IM Used (HTTP Delta encoding)
伺服已完成對資源的 GET 請求,並且響應表示應用於當前實例的一個或多個實例操作的結果。
重定向(Redirection messages)
300 Multiple Choice
該請求有多個可能的響應,用戶代理或用戶應選擇其中之一。(沒有標準化的方法來選擇一種響應,但是建議使用 HTML 連結指向可能性,以便用戶選擇。)
301 Moved Permanently
所請求資源的 URL 已永久更改,新的 URL 在響應中給出。
302 Found
此響應代碼表示所請求資源的 URI 已臨時更改,將來可能會在 URI 中進行進一步的更改。因此,客戶端在以後的請求中應使用相同的 URI。
303 See Other
伺服器發送此響應以指示客戶端使用 GET 請求在另一個 URI 上獲取請求的資源。
304 Not Modified
這用於快取目的,它告訴客戶端尚未修改響應,因此客戶端可以繼續使用響應的相同快取版本。
305 Use Proxy
在 HTTP 規範的先前版本中定義,以指示代理必須訪問請求的響應。由於與代理的帶內配置有關的安全性考慮,已棄用該文件。
306 unused
該響應代碼已不再使用。它只是保留的。在先前版本的 HTTP/1.1 規範中使用了它。
307 Temporary Redirect
伺服器發送此響應以指示客戶端使用先前請求中使用的相同方法在另一個 URI 中獲取請求的資源。這與「302 Found」HTTP 響應代碼具有相同的語義,不同之處在於用戶代理必須不改變使用的 HTTP 方法;如果 POST 是在第一請求中所使用的,則 POST 必須在第二請求中被使用。
308 Permanent Redirect
這意味著資源現在永久位於「Location:HTTP Response」標頭指定的另一個 URI。這與「301 Moved Permanently」HTTP 響應代碼具有相同的語義,不同之處在於用戶代理必須不改變使用的 HTTP 方法;如果 POST 是在第一請求中所使用的,則 POST 必須在第二請求被使用。
客戶端錯誤(Client error responses)
400 Bad Request
由於語法無效,伺服器無法理解該請求。
401 Unauthorized
儘管 HTTP 標準指定了「未經授權」,但從語義上來說,此響應表示「未經驗證」。也就是說,客戶端必須對自己進行身份驗證才能獲得請求的響應。
402 Payment Required
此狀態碼是為了將來可能的需求而預留的。最初的意圖可能被用作某種形式的數字現金或線上支付方案的一部分,但幾乎沒有哪家服務商使用,而且這個狀態碼通常不被使用。
403 Forbidden
客戶端無權訪問內容。也就是說,它是未經授權的,因此伺服器拒絕提供所請求的資源。由於伺服器知道客戶端的身份,因此與「401 Unauthorized」響應不同。
404 Not Found
伺服器找不到請求的資源。在瀏覽器中,這意味著無法識別 URL。在 API 中,這也可能意味著端點有效,但是資源本身不存在。伺服器也可以發送此響應而不是 403,以隱藏來自未授權客戶端的資源。由於此響應代碼在網路上經常出現,因此可能是最著名的響應代碼。
405 Method Not Allowed
伺服器知道該請求方法,但已被禁用、無法使用。例如,API 可能禁止刪除資源。決不能禁用這兩個強制方法 GET 和 HEAD,並且不應返回此錯誤代碼。
406 Not Acceptable
當 Web 伺服器在執行伺服器驅動的內容協商後,未找到符合用戶代理給出的條件的任何內容時,將發送此響應。
407 Proxy Authentication Required
這類似於「401 Unauthorized」,但需要由代理進行身份驗證。
408 Request Timeout
即使沒有客戶端的任何先前請求,某些伺服器也會在空閒連接上發送此響應。這意味著伺服器要關閉此未使用的連接。由於某些瀏覽器使用 HTTP 預連接機制來加快瀏覽速度,因此使用該響應的次數更多。另需注意,某些伺服器僅關閉連接不發送此消息。
409 Conflict
當請求與伺服器的當前狀態衝突時,將發送此響應。
410 Gone
當請求的內容已從伺服器中永久刪除且沒有轉發地址時,將發送此響應。客戶端應刪除其快取和資源鏈接。HTTP 規範打算將此狀態代碼用於「限時促銷服務」。不應強迫 API 指示已使用此狀態代碼刪除的資源。
411 Length Required
伺服器拒絕了該請求,因為未定義 Content-Length 頭字段,並且伺服器需要它。
412 Precondition Failed
客戶端在其標頭中指示伺服器不滿足的前提條件。
413 Payload Too Large
請求實體大於伺服器定義的限制;伺服器可能會關閉連接或返回 Retry-After 標頭字段。
414 URI Too Long
客戶端請求的 URI 比伺服器願意解釋的長。
415 Unsupported Media Type
伺服器不支持所請求數據的媒體格式,因此伺服器拒絕了該請求。
416 Range Not Satisfiable
無法滿足請求中 Range 標頭字段指定的 Range;範圍可能超出目標 URI 數據的大小。
417 Expectation Failed
此響應代碼表示伺服器無法滿足 ExpectRequest 標頭字段指示的 Expect。
418 I’m a teapot
用戶端錯誤碼表明了伺服器是個茶壺,所以拒絕煮咖啡。這個錯誤是源自於 1998 的愚人節玩笑「超文字咖啡壺控制協定」(Hyper Text Coffee Pot Control Protocol)。
421 Misdirected Request
該請求被定向到不能產生響應的伺服器。這可以由未配置為對請求 URI 中包含的方案和權限的組合產生響應的伺服器發送。
422 Unprocessable Entity (WebDAV)
該請求格式正確,但由於語義錯誤而無法遵循。
423 Locked (WebDAV)
被訪問的資源被鎖定。
424 Failed Dependency (WebDAV)
由於前一個請求失敗,因此請求失敗。
425 Too Early
表示伺服器不願意冒險處理可能重播的請求。
426 Upgrade Required
伺服器拒絕使用當前協議執行請求,但是在客戶端升級到其他協議後,伺服器可能願意這樣做。伺服器在 426 響應中發送一個 Upgrade 標頭,以指示所需的協議。
428 Precondition Required
原始伺服器要求該請求是有條件的。此響應旨在防止「丟失更新」問題,在這種情況下,客戶端獲取資源的狀態,然後對其進行修改,然後將其重新放置到伺服器上,而此時第三方已修改了伺服器上的狀態,從而導致衝突。
429 Too Many Requests
用戶在給定的時間內發送了太多請求。
431 Request Header Fields Too Large
伺服器不願意處理該請求,因為其標頭字段太大。在減小請求頭字段的大小之後,可以重新提交請求。
451 Unavailable For Legal Reasons
用戶代理請求了無法合法提供的資源,例如政府審查的網頁。
伺服器錯誤(Server error responses)
500 Internal Server Error
伺服器遇到了不知道如何處理的情況。
501 Not Implemented
伺服器不支持請求方法,無法處理該請求方法。要求伺服器支持的唯一方法是 GET 和 HEAD。
502 Bad Gateway
此錯誤響應意味著伺服器在充當閘道器以獲取處理請求所需的響應的同時,獲得了無效的響應。
503 Service Unavailable
伺服器尚未準備好處理請求,常見原因是伺服器因維護而停機或過載。與此響應一起,應發送一個說明問題的用戶友好頁面。此響應應用於臨時條件,並且 Retry-After:HTTP 標頭應盡可能包含恢復服務之前的估計時間。網站管理員還必須注意與該響應一起發送的與快取相關的標頭,因為這些臨時條件響應通常不應被快取。
504 Gateway Timeout
當伺服器充當閘道器並且無法及時獲得響應時,將給出此錯誤響應。
505 HTTP Version Not Supported
伺服器不支持請求中使用的 HTTP 版本。
506 Variant Also Negotiates
伺服器有一個內部配置錯誤:所選變體資源被配置為本身參與透明的內容協商,因此不是協商過程中的適當終點。
507 Insufficient Storage (WebDAV)
由於伺服器無法存儲成功完成請求所需的表示,因此無法在資源上執行該方法。
508 Loop Detected (WebDAV)
伺服器在處理請求時檢測到無限循環。
510 Not Extended
取得資源所需要的策略並沒有被滿足。
511 Network Authentication Required
表示客戶端需要進行身份驗證才能獲得網路訪問權限。