當我們送出 HTTP Request,就會收到由伺服器傳回的 HTTP Response,但每個 Response 可能會被很多因素阻礙,導致無法正常的傳回客戶端,而狀態碼的存在就是為了清楚顯示每個 Response 處於什麼狀態。

像是我們常見到的 404,代表的就是目前這個頁面不存在

每個狀態碼大部分由三個數字所組成,從最左邊的數字就可以看出狀態碼是哪一類。狀態碼全部可分為下面五大類:

類型 意義
1xx 訊息
2xx 成功
3xx 重新導向
4xx 客戶端錯誤
5xx 伺服器錯誤

下面是每個分類的狀態碼:

1xx

  • 100 繼續執行先前所發出的請求
  • 101 切換通訊協定

2xx

  • 200 客戶端請求成功
  • 201 已建立
  • 202 已接受
  • 203 非授權資訊
  • 204 沒有內容
  • 205 重設內容
  • 206 部分內容
  • 207 傳回的訊息會是 XML 型態
  • 208 響應已傳送
  • 226 已完成響應

3xx

  • 300 請求被收到了,但是需要重新定向
  • 301 被請求的資源永久移動到新位置
  • 302 臨時重新導向
  • 303 當前請求的回應可以在另一個 URI 上被找到
  • 304 已讀取過的圖片或網頁,由瀏覽器 Cache 中讀取
  • 305 被請求的資源需要通過指定的代理才能被存取
  • 307 請求與另一個 URI 重複,但後續的請求應仍使用原始的 URI
  • 308 請求和所有將來的請求應該使用另一個 URI 重複

4xx

  • 400 客戶端發生錯誤
  • 401 沒有認證
  • 403 伺服器已經理解請求,但是拒絕執行它
  • 404 請求失敗
  • 405 請求方法錯誤
  • 406 請求的資源的內容特性無法滿足請求頭中的條件
  • 407 要求 Proxy 認證
  • 408 Request Timeout
  • 409 因為請求存在衝突無法處理該請求
  • 410 請求的資源不再可用
  • 411 Header 需要定義訊息長度

5xx

  • 500 執行錯誤
  • 501 請求方法不支持
  • 502 無效的閘道
  • 503 服務無法使用
  • 504 閘道逾時
  • 505 HTTP 版本不支持
  • 506 伺服器存在內部組態錯誤
  • 507 伺服器無法儲存請求
  • 508 無限迴圈
  • 510 獲取資源策略無法被滿足
  • 511 客戶端需要進行身分驗證