# HTTP 狀態碼對照

> 一份寫給除錯、而不是寫給規格的狀態碼對照表：每個代碼是什麼意思、為什麼是你這一端看到它，以及下一步該做什麼。前端後端使用者分開講。

- URL: https://bytescope.dev/zh-Hant/http-status/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/http-status.md) · [ja](https://bytescope.dev/ja/http-status.md)
- Runs: 全部在你的瀏覽器裡跑，什麼都不會上傳。
- Requires: Any modern browser (Chrome, Edge, Firefox, Safari), desktop and mobile.
- Updated: 2026-09-08

## What it does

### 為了「有人丟三個數字給你」的那一刻而寫

幾乎沒有人是出於好奇才去查狀態碼的。會查，通常是因為剛部署完一半的請求就變紅了、因為客戶回報了一個沒人重現得出來的錯誤，或者因為監控警報只丟了三個數字過來。所以這裡每一頁都先講這個代碼告訴你「故障在哪一段」，然後才講規格怎麼寫。定義是比較短的那一半；決定要去看路由、看代理，還是看上游，才是會吃掉一個下午的那一半。

### 三種讀者，就有三個答案

前端工程師看到的 404，通常是「用點的可以開、一重新整理就壞」的那種路由。同一個 404 落到後端工程師眼裡，通常是應用程式看到路徑之前，被前面加上或剝掉的那一段代理前綴。而在使用者眼中，它就是一條搬走了的連結。這是三個不同的問題、三種不同的修法，把它們揉成同一段的頁面，三個人都幫不上——所以這裡每個代碼都分開回答，而且當某一種讀者最誠實的答案是「你什麼都不用做」時，就直接寫出來。

### 是標準、是廠商自訂，還是只是習慣

RFC 9110 定義了那些照規格實作的用戶端與伺服器解讀一致的狀態碼；有幾個常用的住在自己的文件裡，429 在 RFC 6585、308 在 RFC 7538。而你在正式環境會遇到的代碼裡，有不少兩邊都不屬於：499 來自 nginx 的原始碼，520 到 526 一整段則是 Cloudflare 的，它們被發明出來，就是為了不讓邊緣節點和來源機之間的失敗被籠統地報成 502。每一頁都會寫清楚自己屬於哪一種，因為這決定了哪一份文件才是權威——而這個網站本身就跑在 Cloudflare 上，所以 52x 那幾頁是站在跟你同一邊寫的。

## Limits

Does not test a live URL; it is a reference of HTTP status codes with meaning, causes and fixes.

## FAQ

### HTTP 狀態碼的 1xx 到 5xx 各代表什麼？

第一個數字就是整個分類。1xx 是資訊性的，在應用程式的程式碼裡很少浮上來；2xx 代表請求成功；3xx 代表還需要進一步動作，通常是跟著轉址走；4xx 代表請求本身有問題；5xx 代表伺服器在處理一個看起來合法的請求時自己出了狀況。RFC 9110 還規定，用戶端遇到不認得的代碼時必須當成它那一類的 `x00` 來處理，所以看到沒見過的 599，照 500 處理是安全的。

### 怎麼看一個網頁實際回的是什麼狀態碼？

在瀏覽器裡，打開開發者工具的網路面板，讀那個請求本身的 Status 欄，不要讀它連帶載入的那些檔案。在終端機裡，`curl -sS -o /dev/null -w '%{http_code}\n' https://example.com/page` 只會印出數字，再加上 `-D -` 就會連回應標頭一起印。兩邊不一致時要相信終端機那個：擴充功能、Service Worker，或一份被快取的回應，都能改掉瀏覽器給你看的東西。

### 4xx 是我的錯、5xx 是對方的錯，這樣講對嗎？

這是當初分類的用意，但它是經驗法則，不是保證。設定錯的伺服器一樣會吐出一堆 4xx——被代理弄壞路徑而回的 404、被一條沒人打算套用的規則擋下的 403；反過來，一個要求過頭的請求也一樣會觸發 5xx。用這個分類決定先看哪一邊就好，不要拿它來決定誰該負責。

### 這些代碼裡哪些其實不是標準？

418 出自愚人節的 RFC，是個玩笑，但真的還有伺服器在回它。499 根本沒有在 IANA 登記過，它來自 nginx，意思是「伺服器還沒回答，用戶端就把連線關掉了」，所以它出現在存取紀錄裡，不會出現在瀏覽器上。520 到 526 是 Cloudflare 自己的，只有 Cloudflare 的文件在定義它。至於 429，雖然感覺像是後來補的，它是 RFC 6585 的正式標準，308 也是，出自 RFC 7538。

### 狀態碼會影響 SEO 嗎？

有幾個影響很大。301 會把排名訊號帶到新的網址，302 則是告訴爬蟲這次搬家是暫時的、舊的請留著，所以永久搬遷卻用 302，等於默默付出代價。404 會讓爬蟲過一陣子再回來看，410 則是直接告訴索引器這個資源結束了。最糟的是 soft 404——用 200 回一頁錯誤訊息——因為搜尋引擎會把那段道歉文字當成內容收進索引。
