HTTP 狀態碼查詢
快速查詢 HTTP 狀態碼含義,包含所有標準狀態碼說明
1xx 資訊(4)
繼續。客戶端應繼續發送請求的剩餘部分。
切換協議。伺服器已理解客戶端請求,並透過 Upgrade 標頭通知客戶端切換協議。
處理中。伺服器已收到請求,正在處理,但尚未完成。
早期提示。用於在最終回應之前返回一些頭資訊,幫助客戶端預載入資源。
2xx 成功(10)
成功。請求已成功處理,回應中包含請求的資料。
已建立。請求成功並建立了新的資源。通常用於 POST 請求。
已接受。請求已接受處理,但處理尚未完成。常用於異步處理。
非授權資訊。伺服器成功處理請求,但返回的資訊可能來自第三方。
無內容。請求成功,但回應中不包含消息體。常用於 DELETE 請求。
重置內容。請求成功,客戶端應重置文件視圖。
部分內容。伺服器成功處理了部分 GET 請求,用於斷點續傳。
多狀態。多個狀態碼的回應(WebDAV)。
已報告。DAV 綁定成員已在之前的多狀態回應中被列舉(WebDAV)。
已使用 IM。伺服器已完成 GET 請求,回應使用了實例操作。
3xx 重新導向(8)
多種選擇。請求的資源有多個表示形式,客戶端需選擇。
永久移動。請求的資源已永久移動到新位置,應使用新 URL。
臨時移動。請求的資源現在臨時從另一個 URL 回應。
查看其他。應使用 GET 方法存取另一個 URL 獲取資源。
未修改。資源未被修改,客戶端可使用緩存的版本。
使用代理(已廢棄)。應透過指定代理存取資源。
臨時重新導向。請求應使用相同方法和消息體重新導向到另一個 URL。
永久重新導向。請求應使用相同方法永久重新導向到另一個 URL。
4xx 客戶端錯誤(29)
錯誤請求。伺服器無法理解請求的格式,客戶端應修改請求後重試。
未授權。請求需要使用者身份驗證。
需要付費。保留供將來使用,常用於付費內容。
禁止存取。伺服器理解請求,但拒絕執行。
未找到。請求的資源不存在,最常見的狀態碼。
方法不允許。請求方法不被支援,回應中會包含 Allow 頭。
不可接受。伺服器無法根據客戶端請求的內容類型返回回應。
需要代理身份驗證。客戶端必須先向代理伺服器進行身份驗證。
請求超時。伺服器等待請求超時。
衝突。請求與伺服器當前狀態衝突,常用於 PUT 請求。
已刪除。請求的資源已永久刪除,不會再恢復。
需要長度。請求必須包含 Content-Length 頭。
前置條件失敗。請求頭中指定的條件不滿足。
請求實體過大。請求體超過了伺服器願意處理的大小。
URI 過長。請求的 URL 過長,伺服器無法處理。
不支援的媒體類型。請求體的格式伺服器不支援。
請求範圍不滿足。請求的範圍無效。
期望失敗。伺服器無法滿足請求頭 Expect 欄位的期望。
我是茶壺。RFC 2324 的彩蛋代碼,表示伺服器拒絕煮咖啡。
誤導的請求。請求發送到了無法生成回應的伺服器。
無法處理的實體。請求格式正確,但語義錯誤無法處理。
已鎖定。請求的資源已被鎖定(WebDAV)。
依賴失敗。請求失敗是因為之前的請求失敗(WebDAV)。
太早。伺服器不願處理可能被重放的請求。
需要升級。客戶端應切換到 TLS 協議。
需要前置條件。請求需要有條件頭(如 If-Match)。
請求過多。使用者發送請求過於頻繁,應限制速率。
請求頭欄位過大。請求頭太大,伺服器無法處理。
因法律原因不可用。該資源因法律原因無法提供。
5xx 伺服器錯誤(11)
伺服器內部錯誤。伺服器遇到意外情況,無法完成請求。
未實現。伺服器不支援請求所需的功能。
錯誤網關。伺服器作為網關或代理時,從上游收到無效回應。
服務不可用。伺服器暫時無法處理請求,可能因過載或維護。
網關超時。伺服器作為網關或代理時,等待上游回應超時。
HTTP 版本不支援。伺服器不支援請求使用的 HTTP 版本。
變體也需協商。伺服器配置有誤,導致內容協商進入循環。
儲存空間不足。伺服器無法儲存完成請求所需的資源(WebDAV)。
檢測到循環。伺服器在處理請求時檢測到無限循環(WebDAV)。
未擴展。需要進一步擴展請求才能處理。
需要網路認證。需要進行網路認證才能繼續(如熱點登錄)。
什麼是 HTTP 狀態碼?
HTTP 狀態碼工具用來說明伺服器在收到瀏覽器、搜尋爬蟲、應用程式或 API 使用者端請求後回傳的回應代碼。2xx 通常代表成功,3xx 代表重新導向,4xx 多半是使用者端請求問題,5xx 則指向伺服器端錯誤,但每個代碼的差異很重要。401 和 403 不相同,404 和 410 對資源狀態的含義不同,301 與 302 對 SEO 和快取也有不同影響。它適合開發除錯、介面串接、網站排障與支援回覆時快速查閱。
如何使用
快速參考
- 點選任何狀態碼卡即可複製
- 使用搜尋框快速查找特定狀態碼
- 點選分類標籤依狀態類型篩選
- 將滑鼠懸停於狀態碼上可查看詳細說明
調試注意事項
- 先看狀態類別:2xx 成功、3xx 重新導向、4xx 使用者端錯誤、5xx 伺服器端錯誤。
- 除錯 API 時,請將狀態碼與回應內容、標頭、請求方法及伺服器紀錄一併查看;單靠狀態碼通常無法釐清完整問題。
使用場景
技術原理
HTTP 狀態碼是在回應起始行返回的三位數整數,由 HTTP 語意規範定義。現行規範性參考為 RFC 9110(HTTP 語意,2022 年 6 月),它取代了早期的 RFC 7231 系列,另有 RFC 9111(快取)、RFC 9112(HTTP/1.1)、RFC 9113(HTTP/2)和 RFC 9114(HTTP/3)的擴充。第一位數定義回應類別,因此即使無法識別的代碼也有可預期的處理方式:1xx 資訊性(臨時,最終回應隨後送達)、2xx 成功、3xx 重新導向(需要使用者代理進一步操作)、4xx 使用者端錯誤(請求格式錯誤或無法滿足)、5xx 伺服器錯誤。快取和中介者必須將未知代碼視為通用類別代碼 x00(例如未知的 4xx 按 400 處理),這就是即使對於私有或擴充代碼,狀態系列仍然有意義的原因。 重新導向代碼帶有方法保留語意,歷史上與設計意圖有分歧。RFC 9110 §15.4 明確了區分:301 Moved Permanently 和 302 Found 可能將 POST 改寫為 GET(所有瀏覽器在 1990 年代末達成的事實行為,在 RFC 7231 中正式規範);307 Temporary Redirect 和 308 Permanent Redirect 要求使用者代理重複相同的方法和請求體。SEO 工具通常在 301 和 308 上轉移 PageRank 等效權重,並將 302/307 視為保留原始 URL 的訊號。條件式代碼 304 Not Modified 和 412 Precondition Failed 取決於請求的 If-None-Match / If-Modified-Since / ETag / Last-Modified 標頭,206 Partial Content 回應 Range 標頭,返回 Content-Range 標頭及在請求多個範圍時使用 multipart/byteranges 主體。 4xx 和 5xx 類別在標頭中攜帶契約細節。401 Unauthorized 必須包含 WWW-Authenticate 質詢,列出接受的驗證方案(Bearer、Basic、Digest、Negotiate);缺少此標頭的回應在技術上是格式錯誤的。405 Method Not Allowed 必須包含 Allow 標頭,列出支援的方法。429 Too Many Requests、503 Service Unavailable 以及帶有 Retry-After 的 301/307/308 讓伺服器以秒數(Retry-After: 120)或 HTTP 日期(Retry-After: Wed, 21 Oct 2025 07:28:00 GMT)訊號傳達延遲,依 RFC 9110 §10.2.3。RFC 9110 棄用 305 Use Proxy 和 306(保留/未使用),保留 418 I'm a teapot 作為 RFC 2324 / RFC 7168 記錄的玩笑代碼,並重新組織 1xx,使得 100 Continue 和 101 Switching Protocols 是 HTTP/1.1 層級唯一需要實作的;102 Processing 和 103 Early Hints(RFC 8297)為選用擴充,主要透過 CDN 邊緣邏輯呈現。
- 規範性參考:RFC 9110(HTTP 語意,2022 年 6 月)取代 RFC 7230-7235;擴充位於 RFC 9111(快取)、9112(HTTP/1.1 線路格式)、9113(HTTP/2)、9114(HTTP/3)。
- 未知代碼降級為類別代碼(x00):未知的 4xx 按 400 快取和呈現,未知的 5xx 按 500 處理——這就是第一位數作為契約的意義。
- 方法保留:301/302 歷史上允許 POST → GET 改寫(在 1990 年代初期瀏覽器分歧後正式規範);307/308 要求重放相同的方法和請求體——永久 API 端點遷移請使用 308。
- 401 Unauthorized 必須攜帶 WWW-Authenticate;405 Method Not Allowed 必須攜帶 Allow;缺少這些標頭是違反規範的行為,會破壞正常運作的 HTTP 使用者端。
- Retry-After(RFC 9110 §10.2.3)用於 429/503/301/307/308:接受增量秒數(Retry-After: 120)或 HTTP 日期(Retry-After: Wed, 21 Oct 2025 07:28:00 GMT)——使用者端應解析兩種形式。
- 條件式快取:304 Not Modified 回應 If-None-Match / If-Modified-Since 匹配,無主體;206 Partial Content 回應 Range,帶有 Content-Range 和部分主體或 multipart/byteranges 文件。
- RFC 9110 棄用 305 Use Proxy 和 306(保留),保留 RFC 2324 / RFC 7168 的玩笑代碼 418 I'm a teapot,並將 102 Processing / 103 Early Hints(RFC 8297)視為選用的 1xx 擴充,許多代理會將其移除。
範例
2xx 成功 — 200 OK 與 204 No Content
200 OK GET /api/users -> 回傳回應主體
201 Created POST /api/posts -> 新資源位置在 Location 標頭
204 No Content DELETE /api/posts/42 -> 成功,主體為空
206 Partial 影片串流或可續傳下載的 Range 請求
RFC: RFC 7231 第 6.3 節定義 2xx 成功狀態碼3xx 重新導向 — 301 vs 302 vs 304
301 Moved Permanently -> SEO 安全,瀏覽器永久快取新 URL
302 Found -> 暫時導向,目標不應快取
304 Not Modified -> 快取副本仍有效(ETag/Last-Modified 比對相符)
307 Temporary Redirect -> 類似 302,但請求方法不可變動(POST 仍為 POST)
308 Permanent Redirect -> 類似 301,但保留請求方法
RFC: RFC 7231 第 6.4 節定義 3xx 重新導向狀態碼
RFC: RFC 7232 第 4.1 節定義 304 Not Modified 語意4xx 使用者端錯誤 — 認證 vs 權限
400 Bad Request 格式錯誤的 JSON、缺少必填欄位
401 Unauthorized 缺少或無效的 token — 呼叫端必須先認證
403 Forbidden 已認證但無權存取此資源
404 Not Found 資源不存在(或基於安全考量假裝不存在)
409 Conflict 重複鍵、樂觀鎖版本不符
429 Too Many Reqs 觸發速率限制 — 參見 Retry-After 標頭
RFC: RFC 7231 第 6.5 節定義 4xx 使用者端錯誤狀態碼
RFC: RFC 6585 第 4 節定義 429 Too Many Requests5xx 伺服器錯誤 — 偵錯上游服務
500 Internal Server Error 應用程式碼未處理的例外 — 請查看日誌
502 Bad Gateway Nginx/上游服務從後端收到無效回應
503 Service Unavailable 維護中、過載,或應用程式正在啟動
504 Gateway Timeout 上游服務未在代理逾時前回應
RFC: RFC 7231 第 6.6 節定義 5xx 伺服器錯誤狀態碼
快速判斷:5xx 是我們的問題,4xx 是呼叫端的問題顯示多種狀態碼的實際 curl 連線
$ curl -I https://example.com/old-page
HTTP/2 301
location: https://example.com/new-page
$ curl -I https://example.com/admin
HTTP/2 401
www-authenticate: Bearer realm="api"
$ curl -X POST https://example.com/api/posts -d '{}'
HTTP/2 422
content-type: application/json
說明:422 Unprocessable Entity 是 WebDAV 擴充(RFC 4918),用於驗證錯誤常見問題
1xx、2xx、3xx、4xx、5xx 各代表什麼?
1xx 為資訊性回應(實務上少見)。2xx 表示請求成功。3xx 是重新導向——使用者端應改連到另一個 URL。4xx 是使用者端問題(請求錯誤、缺少驗證、找不到資源)。5xx 是伺服器端問題(請求看似正確但伺服器處理失敗)。看 log 時請先看類別。
301 與 302 有什麼差別?
301 Moved Permanently 告訴使用者端與搜尋引擎資源已永久搬遷——瀏覽器會積極快取此重新導向,SEO 連結權重也會轉移到新網址。302 Found 是暫時重新導向,使用者端不應長期快取。若你必須保留請求方法,永久重新導向請用 308,暫時重新導向請用 307。
什麼時候該回傳 401,什麼時候該回傳 403?
401 Unauthorized 表示使用者端尚未驗證或所提供的憑證無效——回應應包含 WWW-Authenticate 標頭。403 Forbidden 則表示伺服器知道使用者是誰,但拒絕提供此資源。登入可解決 401;登入解決不了 403。
資源不再存在時應使用 404 還是 410?
404 Not Found 意指「我找不到,可能在別處或之後會回來」。410 Gone 意指「這個資源曾在這裡,已被刻意移除,不要再來找」。搜尋引擎會比 404 更快地把 410 從索引中移除,因此對於確定下架且不希望被再次抓取的頁面,410 才是正確選擇。
除錯 API 時應該怎麼解讀狀態碼?
先看類別(4xx 與 5xx 告訴你是哪一邊的問題),再看具體代碼,最後看回應主體。主體通常會帶實際錯誤訊息與內部錯誤碼;HTTP 狀態只是分類。也別忘了檢查 Retry-After、WWW-Authenticate、Location 等標頭。
非 2xx 的狀態碼會傷害 SEO 嗎?
有些會、有些不會。長時間的 5xx 回應會讓搜尋引擎覺得網站不可靠,最終降低抓取頻率。301/308 會傳遞連結權重,302/307 不會。410 能加速從索引移除,404 則會留存較久。傳回 200 的軟性 404(找不到頁面卻回 200)對 SEO 比真正的 404 更糟,因為它會讓索引塞滿空頁面。
418、451 等不常見的狀態碼是做什麼用的?
418「我是茶壺」是 RFC 2324 的著名愚人節代碼——正式服務絕不該回傳。451 Unavailable For Legal Reasons 表示資源因法律要求而被封鎖(名字源自雷·布萊伯利的《華氏 451 度》)。429 Too Many Requests 表示流量限制,應搭配 Retry-After 標頭。503 Service Unavailable 才是規畫性維護時應使用的代碼。