什麼是HTTP狀態碼(HTTP Status Codes)?

HTTP 狀態碼(HTTP Status Codes)是網路上的網站伺服器給的標準回應代碼。這些代碼能幫助你辨別出網頁或其他資源無法讀取時的原因。

專有名詞 HTTP 狀態碼實際上是常用的一種術語,用來說明包含 HTTP 狀態碼及 HTTP 原因短語的 HTTP 狀態行。

HTTP 狀態碼通常也被稱作瀏覽器錯誤碼或網路錯誤碼。

舉例來說,HTTP 狀態行 500:內部伺服器錯誤是由 HTTP 狀態碼 500及 HTTP 原因短語”內部伺服器錯誤”所組成。

有五種 HTTP 狀態碼錯誤分類,以下是其中主要的兩大類別:

4xx 客戶端錯誤

這個類別的 HTTP 狀態碼推測為客戶端的錯誤(網路瀏覽者),包括那些來自網頁的請求或其他含有錯誤語法的資源,或其他原因不能被完成的要求。

一些常見的客戶端錯誤 HTTP 狀態碼包括 404(找不到伺服器)、403(禁止存取),以及 400(錯誤請求)。

 

5xx 伺服器錯誤

這一類別的HTTP狀態碼,包括一些可以被網站伺服器理解,但卻因為一些原因無法使用及完成的網頁要求或其他資源。

一些常見的伺服器錯誤 HTTP 狀態碼包括一直以來很常見的 500(內部伺服器錯誤)、504(閘道逾時)、503(服務不可用),以及 502(錯誤閘道)。

 

關於 HTTP 狀態碼的更多資訊

除了 4xx 及 5xx 以外,也有其他 HTTP 狀態碼存在,例如有 1xx、2xx、3xx 碼,它們分別是資訊相關的、確認成功或重新指示定向。這些額外的 HTTP 種類並不是錯誤,所以你理應不會在瀏覽器中收到這些警告。

你可以查看我們的 HTTP 狀態碼錯誤文章,裡頭有完整的 HTTP 狀態碼錯誤清單,或者在我們的 HTTP 狀態行部份看看所有這些 HTTP 狀態行(1xx、2xx 及 3xx)資訊。

IANA 的超文本傳輸協定(HTTP)狀態碼註冊頁面是 HTTP 狀態碼的官方來源,但 Windows 有時候會加入額外、更精確解釋額外訊息的錯誤代碼。

舉例來說,雖然 HTTP 狀態碼 500 表示網路伺服器錯誤,但 Microsoft 網路資訊服務(ISS)使用 500.15 來表示不允許直接要求讀取Global.aspx

以下是一些其他的例子:

  • 404.13 的 HTTP 原因短語是過大的內容長度。
  • 500.53 表示在RQ_RELEASE_REQUEST_STATE 提示控制時發生的覆寫錯誤。發生傳出規則執行錯誤。這個規則設定為在使用者快取記憶體更新前執行。
  • 502.3 表示錯誤閘道:轉發連接錯誤(ARR)。

這些由 Microsoft 發明,被稱為次代碼的東西並沒有取代 HTTP 狀態碼,而是在 Windows 的各處可以發現,例如文件檔案。

 

並非所有錯誤碼都有關聯

HTTP 狀態碼與裝置管理員錯誤碼或系統錯誤碼是不同的東西,有些系統錯誤碼使用和 HTTP 狀態碼一樣的數字,但它們是不同的錯誤,有著完全不同的錯誤相關訊息及定義。

舉例來說,HTTP 狀態碼 403.2 表示禁止讀取權。不過,同時也有一個系統錯誤碼 403,表示的是此流程不在背景執行模式中

類似的例子,像是 500 狀態碼表示網路伺服器錯誤,也很容易和系統錯誤碼 500 搞混,後者表示的是使用者個人檔案無法讀取

不過,這些錯誤碼彼此並沒有關聯,也不應該以類似的方式處理。一個是在網頁瀏覽器中展示,解釋關於客戶端或伺服器的錯誤訊息;而另一個是在 Windows 的其他地方出現,並不一定跟網頁瀏覽器有相關。

如果你對於辨別出錯誤碼是否為 HTTP 狀態碼感到困擾,那就仔細看看訊息是在哪裡出現的。如果你在你的網頁瀏覽器中或網頁上看到錯誤,那就是 HTTP 回應代碼。

其他的錯誤訊息就要個別地依照它們出現的背景來定位:裝置管理員錯誤碼可以在裝置管理員中看到、系統錯誤碼會在 Windows 裡顯示、POST碼會在啟動自我檢測中出現等等。