HTTP 狀態碼
用淺白的話解釋每一個 HTTP 狀態碼:它代表什麼、常見原因、如何解決、回應範例,以及定義它的 RFC。
共 70 個狀態碼
1xx 資訊
暫時回應:請求已收到,正在繼續處理。
100 Continue 繼續 伺服器已收到請求標頭,用戶端可以繼續傳送請求本文。這是在最終狀態碼之前送出的暫時回應。 101 Switching Protocols 切換協定 伺服器同意切換到用戶端在 Upgrade 標頭中要求的協定,最常見的是 WebSocket。此回應之後,連線改用新協定溝通。 102 Processing 處理中 WebDAV 的暫時回應,告訴用戶端伺服器仍在處理耗時的請求,先不要逾時。它已被棄用,現在很少使用。 103 Early Hints 早期提示 一種暫時回應,提前送出 Link 標頭,讓瀏覽器在伺服器仍在產生最終頁面時就預先載入 CSS、字型或預先連線到其他來源。
2xx 成功
請求已成功接收、理解並接受。
200 OK 成功 請求成功。對 GET 而言,本文包含所要求的資源;對 POST 而言,本文包含操作結果。 201 Created 已建立 請求成功並建立了新資源。Location 標頭通常指向它。 202 Accepted 已接受 請求已被接受等待處理,但處理尚未完成,回應當下還不知道結果。 203 Non-Authoritative Information 非權威資訊 請求成功,但轉換型代理修改了來源伺服器 200 回應的內容。 204 No Content 無內容 請求成功,沒有需要回傳的本文。標頭仍可攜帶新的 ETag 等中繼資料。 205 Reset Content 重設內容 請求成功,用戶端應重設文件檢視,例如清空剛送出的表單。不傳送本文。 206 Partial Content 部分內容 伺服器依 Range 標頭的要求只回傳資源的一部分。Content-Range 說明包含哪些位元組。 207 Multi-Status 多重狀態 WebDAV 回應,其 XML 本文為單一請求影響的多個資源分別提供狀態。 208 Already Reported 已回報 用於 WebDAV 207 本文中,表示該資源在回應前面已列出,避免繫結形成迴圈時重複列出。 226 IM Used 已使用 IM 伺服器完成 GET 時套用了一個或多個實例操作(差異編碼),因此本文是差異而非完整資源。
3xx 重新導向
用戶端需要再做一步,通常是前往新的 URL。
300 Multiple Choices 多種選擇 資源有多種表示(語言、格式),需要用戶端或使用者選擇其一。伺服器可透過 Location 建議首選。 301 Moved Permanently 永久移動 資源已永久移到 Location 中的 URL。用戶端與搜尋引擎今後應使用新 URL。 302 Found 已找到 資源暫時位於另一個 URL。用戶端日後仍應使用原本的 URL 發出請求。 303 See Other 參見其他 伺服器引導用戶端以 GET 取得另一個 URL,通常用於顯示 POST 的結果。 304 Not Modified 未修改 用戶端已有的快取副本仍然有效,因此伺服器不傳送本文。它回應帶有 If-None-Match 或 If-Modified-Since 的條件式請求。 305 Use Proxy 使用代理 已棄用。它曾要求用戶端透過 Location 中的代理重送請求。基於安全理由,瀏覽器會忽略它。 307 Temporary Redirect 暫時重新導向 資源暫時位於另一個 URL,用戶端必須以相同的方法與本文在該處重送請求。 308 Permanent Redirect 永久重新導向 資源已永久移動,用戶端必須以相同的方法與本文在新 URL 重送請求。
4xx 用戶端錯誤
請求本身有問題,需要用戶端修正。
400 Bad Request 錯誤的請求 請求格式有誤,伺服器無法處理:語法無效、訊框錯誤或含有無法解析的值。 401 Unauthorized 未授權 請求缺少有效的身分驗證憑證。雖然叫「未授權」,實際意思是「未驗證」:請登入或送出有效的權杖。 402 Payment Required 需要付款 保留供日後使用,但實際上許多服務在需要付款或付費方案才能繼續時回傳它。 403 Forbidden 禁止存取 伺服器理解請求但拒絕授權。除非權限改變,否則重新登入也沒用。 404 Not Found 找不到 伺服器在所要求的 URL 找不到任何內容。它不說明資源是否曾經存在或日後是否會恢復。 405 Method Not Allowed 方法不允許 URL 存在,但不支援所使用的 HTTP 方法。Allow 標頭列出可用的方法。 406 Not Acceptable 無法接受 伺服器無法以用戶端 Accept 標頭所允許的任何格式產生回應。 407 Proxy Authentication Required 需要代理驗證 用戶端與伺服器之間的代理要求先驗證身分,才會轉送請求。 408 Request Timeout 請求逾時 用戶端未在時限內送出完整請求,伺服器關閉了連線。 409 Conflict 衝突 請求與資源目前的狀態衝突,例如重複資料或同時編輯。 410 Gone 已移除 資源已永久消失,且沒有已知的新位址。與 404 不同,這是伺服器刻意聲明的。 411 Length Required 需要長度 伺服器要求 Content-Length 標頭,但請求中沒有。 412 Precondition Failed 先決條件失敗 請求標頭中的先決條件(如 If-Match 或 If-Unmodified-Since)判定為假,因此伺服器沒有套用此請求。 413 Content Too Large 內容過大 請求本文超過伺服器願意或能夠處理的大小。舊稱 Payload Too Large。 414 URI Too Long URI 過長 請求的 URL 超過伺服器願意解析的長度。 415 Unsupported Media Type 不支援的媒體類型 請求本文的媒體類型(Content-Type)或編碼不受支援,伺服器拒絕了請求。 416 Range Not Satisfiable 範圍無法滿足 Range 標頭要求的位元組超出資源的大小。 417 Expectation Failed 預期失敗 伺服器無法滿足請求 Expect 標頭的要求,通常是 Expect: 100-continue。 418 I'm a teapot 我是茶壺 來自超文字咖啡壺控制協定的愚人節玩笑:伺服器是一把茶壺,拒絕煮咖啡。有些網站用它開玩笑或封鎖機器人。 421 Misdirected Request 誤導的請求 請求送到了一台沒有設定為該主機提供服務的伺服器,常見原因是 HTTP/2 連線被重複用於另一個網域。 422 Unprocessable Content 無法處理的內容 請求格式正確但含有語意錯誤,伺服器無法處理。舊稱 Unprocessable Entity。 423 Locked 已鎖定 WebDAV:資源已被鎖定,無法套用該方法。 424 Failed Dependency 相依失敗 WebDAV:操作失敗,因為它相依的同一請求中的另一個操作失敗了。 425 Too Early 為時過早 伺服器拒絕處理以 TLS 1.3 早期資料(0-RTT)送出的請求,因為它可能被重送攻擊。 426 Upgrade Required 需要升級 伺服器拒絕以目前的協定處理請求,要求用戶端升級到 Upgrade 標頭中指定的協定,例如 TLS 或 HTTP/2。 428 Precondition Required 需要先決條件 伺服器要求請求必須是條件式的(If-Match 等),以防止更新遺失。 429 Too Many Requests 請求過多 用戶端在一定時間內送出太多請求(速率限制)。Retry-After 可能說明要等多久。 431 Request Header Fields Too Large 請求標頭欄位過大 請求標頭太大,可能是單一標頭或所有標頭加總過大。 451 Unavailable For Legal Reasons 因法律原因無法提供 由於法院命令或政府審查等法律原因,伺服器無法提供該資源。這個數字向《華氏 451 度》致敬。 499 Client Closed Request (非標準) 用戶端關閉請求 當用戶端在伺服器送出回應前關閉連線時,nginx 會記錄 499。用戶端永遠不會看到這個狀態碼。
5xx 伺服器錯誤
請求有效,但伺服器未能完成。
500 Internal Server Error 伺服器內部錯誤 伺服器遇到非預期的狀況,無法完成請求。這是伺服器端錯誤的通用狀態碼。 501 Not Implemented 未實作 伺服器不支援完成請求所需的功能,通常是不支援請求方法本身。 502 Bad Gateway 錯誤閘道 閘道或代理從它轉送請求的上游伺服器收到了無效的回應。 503 Service Unavailable 服務無法使用 伺服器因過載或維護暫時無法處理請求。Retry-After 可能說明何時再試。 504 Gateway Timeout 閘道逾時 閘道或代理沒有及時從上游伺服器收到回應。 505 HTTP Version Not Supported 不支援的 HTTP 版本 伺服器不支援請求所使用的 HTTP 版本。 506 Variant Also Negotiates 變體也在協商 透明內容協商設定錯誤:被選中的變體本身又設定為參與協商,形成迴圈。 507 Insufficient Storage 儲存空間不足 伺服器無法儲存完成請求所需的內容(磁碟空間或配額不足)。源自 WebDAV。 508 Loop Detected 偵測到迴圈 伺服器在處理 Depth: infinity 的請求(WebDAV)時偵測到無限迴圈。有些主機商也用它表示資源限制。 510 Not Extended 未擴充 伺服器需要更多擴充才能完成請求(HTTP 擴充框架)。該框架已成為歷史。 511 Network Authentication Required 需要網路驗證 用戶端必須先驗證身分才能使用網路,常見於強制登入頁面(飯店或機場 Wi-Fi)。 520 Web Server Returned an Unknown Error (非標準) 未知錯誤 Cloudflare 專用:來源伺服器回傳了空的、未知的或非預期的回應。 521 Web Server Is Down (非標準) 網頁伺服器停止運作 Cloudflare 專用:來源伺服器拒絕了連線。 522 Connection Timed Out (非標準) 連線逾時 Cloudflare 專用:與來源伺服器的 TCP 連線逾時。 523 Origin Is Unreachable (非標準) 無法連線至來源 Cloudflare 專用:Cloudflare 無法連到來源伺服器,通常是 DNS 或路由問題。 524 A Timeout Occurred (非標準) 發生逾時 Cloudflare 專用:已與來源伺服器建立連線,但來源未及時送出 HTTP 回應(預設 100 秒)。 525 SSL Handshake Failed (非標準) SSL 交握失敗 Cloudflare 專用:Cloudflare 與來源伺服器之間的 TLS 交握失敗。 526 Invalid SSL Certificate (非標準) 無效的 SSL 憑證 Cloudflare 專用:在 Full (strict) SSL 模式下,來源伺服器的憑證無效、已過期、自簽或與主機名稱不符。