HTTP 狀態碼的完整指南和列表
已發表: 2020-02-24HTTP 狀態代碼就像來自服務器的簡短註釋,被添加到網頁上。 它們實際上並不是網站內容的一部分。 相反,它們是來自服務器的消息,讓您知道當它收到查看某個頁面的請求時情況如何。
每次您的瀏覽器與服務器交互時都會返回這些類型的消息,即使您沒有看到它們。 如果您是網站所有者或開發人員,了解HT TP 狀態代碼至關重要。 當它們出現時,HTTP 狀態代碼是診斷和修復網站配置錯誤的寶貴工具。
本文介紹了幾個服務器狀態和錯誤代碼,並解釋了它們揭示的服務器幕後發生的事情。
讓我們潛入吧!
喜歡看視頻版?
什麼是 HTTP 狀態碼?
每次您單擊鏈接或輸入 URL 並按Enter時,您的瀏覽器都會向您嘗試訪問的站點的網絡服務器發送一個請求。 服務器接收並處理請求,然後將相關資源連同 HTTP 標頭一起發回。
HTTP 狀態代碼在 HTTP 標頭中傳送到您的瀏覽器。 雖然每次瀏覽器請求網頁或資源時都會返回狀態代碼,但大多數情況下您看不到它們。
通常只有在出現問題時,您才會在瀏覽器中看到一個顯示。 這是服務器的說法:“有什麼不對勁。 這是一個解釋出了什麼問題的代碼。”

如果您想查看瀏覽器通常不會顯示的狀態代碼,有許多不同的工具可以讓您輕鬆查看。 瀏覽器擴展可用於對開發人員友好的平台,例如 Chrome 和 Firefox,並且有許多基於 Web 的標頭獲取工具,例如 Web Sniffer。
要使用這些工具之一查看 HTTP 狀態代碼,請查找報告頂部附近顯示“狀態:HTTP/1.1”的行。 後面是服務器返回的狀態碼。
了解 HTTP 狀態代碼類
HTTP 狀態碼分為 5 個“類”。 這些是具有相似或相關含義的響應分組。 了解它們是什麼可以幫助您在查找其具體含義之前快速確定狀態代碼的一般內容。
五類包括:
- 100s:表示瀏覽器發起的請求正在繼續的信息代碼。
- 200s:服務器接收、理解和處理瀏覽器請求時返回的成功碼。
- 300s:當新資源被請求的資源替換時返回的重定向代碼。
- 400s:客戶端錯誤代碼,表示請求有問題。
- 500s:服務器錯誤代碼表示請求已被接受,但服務器上的錯誤阻止了請求的完成。
在這些類中的每一個中,都存在各種服務器代碼,並且可能由服務器返回。 每個單獨的代碼都有特定和獨特的含義,我們將在下面更全面的列表中介紹。
為什麼 HTTP 狀態代碼和錯誤對搜索引擎優化 (SEO) 很重要
搜索引擎機器人在抓取您的網站時會看到 HTTP 狀態代碼。 在某些情況下,這些消息會影響您的網頁是否以及如何被編入索引,以及搜索引擎如何看待您網站的健康狀況。
一般來說,100 級和 200 級 HTTP 狀態碼不會對您的 SEO 產生太大影響。 它們表明您網站上的一切都在正常運行,並使搜索引擎機器人能夠繼續前進。 但是,它們也不會提高您的排名。
在大多數情況下,對 SEO 重要的是更高級別的代碼。 400 級和 500 級響應可以防止機器人抓取和索引您的頁面。 這些錯誤太多也可能表明您的網站質量不高,可能會降低您的排名。
300 級代碼與 SEO 的關係稍微複雜一些。 要了解它們的影響,您需要了解的主要內容是永久重定向和臨時重定向之間的區別,我們將在下面的相關部分中更詳細地介紹。
然而,簡而言之,永久重定向從反向鏈接共享鏈接權益,但臨時重定向不共享。 換句話說,當您對已移動的頁面使用臨時重定向時,您將失去已完成的所有鏈接構建的 SEO 優勢。
在 Google Search Console 中檢查 HTTP 狀態代碼
監控 Google 如何感知您網站上的 HTTP 狀態代碼的一種方法是使用 Google Search Console。 您可以在Coverage報告中查看 300、400 和 500 級別的狀態代碼:

儀表板的此區域顯示您網站上的四種類型的內容:
- 返回錯誤的頁面。
- 有警告的有效頁面。
- 有效的資源。
- 從索引中排除的內容。
您可能會在Excluded 、 Error或Valid with warnings部分下找到具有 300、400 和 500 級 HTTP 狀態代碼的頁面,具體取決於代碼的類型。 例如,301 重定向可能會在Excluded as Page with redirect下列出:

400 級和 500 級狀態代碼可能會出現在Error下。
查看 HTTP 狀態代碼的另一種方法是使用URL 檢查工具。 如果 Google 由於錯誤而無法將特定頁面編入索引,您會在此處看到:

有關使用 Google Search Console 的更多提示,請查看我們的平台綜合指南。
HTTP 狀態碼的完整指南和列表
雖然有超過 40 種不同的服務器狀態代碼,但您經常會遇到不到十幾個。 下面,我們介紹了更常見的代碼,以及一些您可能仍會遇到的更晦澀的代碼。
被 HTTP 狀態碼難住了? 我們的 WordPress 專家隨時待命。 免費試用 Kinsta。
100 個狀態碼
一個 100 級的狀態代碼告訴您,您向服務器發出的請求由於某種原因仍在進行中。 這不一定是問題,它只是讓您知道發生了什麼的額外信息。
- 100: “繼續。” 這意味著有問題的服務器已收到您瀏覽器的請求標頭,並且現在已準備好發送請求正文。 這使得請求過程更加高效,因為它可以防止瀏覽器發送正文請求,即使標頭已被拒絕。
- 101: “交換協議。” 您的瀏覽器已要求服務器更改協議,並且服務器已遵守。
- 103: “早期提示。” 這會在服務器響應的其餘部分準備好之前返回一些響應標頭。
200 個狀態碼
這是接收的最好的 HTTP 狀態碼。 200 級響應意味著一切都按應有的方式工作。
- 200: “一切都好。” 這是當網頁或資源完全按照預期方式運行時交付的代碼。
- 201: “創建。” 服務器完成了瀏覽器的請求,因此創建了一個新資源。
- 202: “接受。” 服務器已接受瀏覽器的請求,但仍在處理中。 該請求最終可能會或可能不會導致完整的響應。
- 203: “非權威信息。” 使用代理時可能會出現此狀態代碼。 這意味著代理服務器從源服務器收到了 200“一切正常”狀態代碼,但在將響應傳遞給瀏覽器之前已對其進行了修改。
- 204: “沒有內容。” 此代碼表示服務器已成功處理請求,但不會返回任何內容。
- 205: “重置內容。” 與 204 代碼一樣,這意味著服務器如何處理請求但不會返回任何內容。 但是,它還要求您的瀏覽器重置文檔視圖。
- 206: “部分內容。” 如果您的 HTTP 客戶端(也稱為瀏覽器)使用“範圍標頭”,您可能會看到此狀態代碼。 這使您的瀏覽器能夠恢復暫停的下載,以及將下載拆分為多個流。 當範圍標頭導致服務器僅發送所請求資源的一部分時,將發送 206 代碼。
300 個狀態碼
重定向是用於傳達資源已移動到新位置的過程。 有幾個伴隨重定向的 HTTP 狀態代碼,以便向訪問者提供有關在哪裡可以找到他們正在尋找的內容的信息。
- 300: “多項選擇。” 有時,服務器可能會響應多種可能的資源來滿足瀏覽器的請求。 300 狀態碼意味著您的瀏覽器現在需要在它們之間進行選擇。 當有多個可用的文件類型擴展名或服務器遇到詞義消歧時,可能會發生這種情況。
- 301: “請求的資源已被永久移動。” 當網頁或資源被永久替換為不同的資源時,將提供此代碼。 它用於永久 URL 重定向。
- 302: “請求的資源已移動,但已找到。” 此代碼用於指示找到了請求的資源,只是不在預期的位置。 它用於臨時 URL 重定向。
- 303: “見其他。” 了解 303 狀態碼需要您知道四種主要 HTTP 請求方法之間的區別。 本質上,303 代碼告訴您的瀏覽器它找到了您的瀏覽器通過 POST、PUT 或 DELETE 請求的資源。 但是,要使用 GET 檢索它,您需要向與以前使用的 URL 不同的 URL 發出適當的請求。
- 304: “請求的資源自你上次訪問以來沒有被修改過。” 這段代碼告訴瀏覽器存儲在瀏覽器緩存中的資源沒有改變。 它用於通過重用以前下載的資源來加速網頁交付。
- 307: “臨時重定向。” 當資源被臨時移動到不同的 URL 時,此狀態代碼已取代 302“找到”作為適當的操作。 與 302 狀態碼不同,它不允許更改 HTTP 方法。
- 308: “永久重定向。” 308 狀態代碼是 301“永久移動”代碼的繼承者。 它不允許更改 HTTP 方法,並指示請求的資源現在永久位於新 URL。
400 個狀態碼
在 400 級別,HTTP 狀態代碼開始出現問題。 這些是錯誤代碼,表明您的瀏覽器和/或請求存在故障。

- 400: “錯誤請求。” 由於客戶端出錯,服務器無法返迴響應。 請參閱我們的指南以解決此錯誤。
- 401: “未經授權”或“需要授權”。 當目標資源缺少有效的身份驗證憑據時,服務器會返回此信息。 如果您使用 htpasswd 設置了基本的 HTTP 身份驗證,您可能會看到這一點。

- 402: “需要付款。” 最初,此代碼是為用作數字現金系統的一部分而創建的。 然而,該計劃從未實施。 相反,它被各種平台用來表示無法滿足請求,通常是由於缺乏所需的資金。 常見的例子包括:
- 您已達到對 Google Developers API 的每日請求限制。
- 您尚未支付 Shopify 費用,並且您的商店已被暫時停用。
- 您通過 Stripe 的付款失敗,或者 Stripe 正試圖阻止欺詐性付款。
- 403: “禁止訪問該資源。” 當用戶嘗試訪問他們無權查看的內容時,將返回此代碼。 例如,嘗試在不登錄的情況下訪問受密碼保護的內容可能會產生 403 錯誤。
- 404: “未找到請求的資源。” 這是它們中最常見的錯誤消息。 這段代碼意味著請求的資源不存在,服務器不知道它是否曾經存在過。
- 405: “方法不允許。” 這是在託管服務器(源服務器)支持接收到的方法時生成的,但目標資源不支持。
- 406: “不可接受的響應。” 根據請求中發送的接受標頭,請求的資源只能生成不可接受的內容。
- 407: “需要代理身份驗證。” 代理服務器正在使用中,需要您的瀏覽器在繼續之前對其進行身份驗證。
- 408: “服務器在等待來自瀏覽器的其餘請求時超時。” 當服務器在等待來自瀏覽器的完整請求時超時時會生成此代碼。 換句話說,服務器沒有收到瀏覽器發送的完整請求。 一種可能的原因可能是網絡擁塞導致瀏覽器和服務器之間的數據包丟失。
- 409: “衝突。” 409 狀態碼表示服務器無法處理瀏覽器的請求,因為與相關資源存在衝突。 這有時是由於多個同時編輯而發生的。
- 410: “請求的資源已經消失,不會再回來了。” 這類似於 404“未找到”代碼,除了 410 表示該情況是預期的並且是永久性的。
- 411: “需要長度。” 這意味著請求的資源需要客戶端指定一定的長度,而它沒有。
- 412: “前提條件失敗。” 您的瀏覽器在其請求標頭中包含某些條件,而服務器不符合這些規範。
- 413: “有效負載太大”或“請求實體太大”。 您的請求比服務器願意或能夠處理的要大。
- 414: “URI 太長。” 這通常是 GET 請求的結果,該請求已被編碼為查詢字符串,該查詢字符串太大而服務器無法處理。
- 415: “不支持的媒體類型。” 請求包含服務器或資源不支持的媒體類型。
- 416: “範圍不滿足。” 您的請求是針對服務器無法返回的資源的一部分。
- 417: “期待失敗。” 服務器無法滿足請求的期望頭字段中指定的要求。
- 418: “我是個茶壺。” 此代碼由接收沖泡咖啡請求的茶壺返回。 這也是 1998 年的愚人節笑話。

- 422: “無法處理的實體。” 客戶端請求包含語義錯誤,服務器無法處理。
- 425: “太早了。” 當服務器不願意處理請求時發送此代碼,因為它可能會被重放。
- 426: “需要升級。” 由於請求的升級頭字段的內容,客戶端應該切換到不同的協議。
- 428: “需要先決條件。” 服務器需要在處理請求之前指定條件。
- 429: “請求太多。” 當用戶在給定的時間內發送了太多請求(速率限制)時,這是由服務器生成的。 這有時可能是由於機器人或腳本試圖訪問您的站點而發生的。 在這種情況下,您可能想嘗試更改您的 WordPress 登錄 URL。 您還可以查看我們的修復 429“請求過多”錯誤的指南。

- 431: “請求標頭字段太大。” 服務器無法處理請求,因為標頭字段太大。 這可能表明單個標頭字段或所有標頭字段存在問題。
- 451: “因法律原因不可用。” 服務器的運營商收到了禁止訪問您請求的資源(或一組資源,包括您請求的資源)的要求。 有趣的事實:此代碼是對 Ray Bradbury 的小說Fahrenheit 451的引用。
- 499: “客戶端關閉請求。” 當 Nginx 仍在處理請求時,當客戶端關閉請求時,NGINX 會返回此信息。
被 HTTP 狀態碼難住了? 我們的 WordPress 專家隨時待命。 免費試用 Kinsta。
500 個狀態碼
500 級狀態代碼也被視為錯誤。 但是,它們表示問題出在服務器端。 這會使它們更難解決。
- 500: “服務器出錯,請求無法完成。” 這是通用代碼,僅表示“內部服務器錯誤”。 服務器出現問題,請求的資源未交付。 此代碼通常由第三方插件、錯誤的 PHP 甚至與數據庫的連接中斷生成。 查看我們的教程,了解如何修復建立數據庫連接的錯誤以及解決 500 內部服務器錯誤的其他方法。

- 501: “未實施。” 此錯誤表明服務器不支持滿足請求所需的功能。 這幾乎總是網絡服務器本身的問題,通常必須由主機解決。 查看我們關於如何解決 501 未實施錯誤的建議。
- 502: “網關錯誤。” 此錯誤代碼通常意味著一台服務器從另一台服務器收到了無效響應,例如在使用代理服務器時。 其他時候查詢或請求將花費太長時間,因此它被服務器取消或終止,並且與數據庫的連接中斷。 有關更多詳細信息,請參閱我們關於如何修復 502 Bad Gateway 錯誤的深入教程。
- 503: “服務器現在無法處理這個請求。” 請求無法在此時完成。 此代碼可能由無法處理其他請求的過載服務器返回。 我們有關於如何修復 503 服務不可用錯誤的完整指南。
- 504: “作為網關的服務器等待另一台服務器響應超時。” 這是當有兩台服務器參與處理請求時返回的代碼,並且第一台服務器超時等待第二台服務器響應。 您可以在我們的專用指南中閱讀有關如何修復 504 錯誤的更多信息。
- 505: “不支持 HTTP 版本。” 服務器不支持客戶端用於發出請求的 HTTP 版本。
- 508 : “ Resource Limit Is Reached” 已達到您的虛擬主機設置的資源限制。 查看我們的教程,了解如何解決“已達到 508 資源限制”錯誤。
- 511: “需要網絡身份驗證。” 當您嘗試使用的網絡在將您的請求發送到服務器之前需要某種形式的身份驗證時,將發送此狀態代碼。 例如,您可能需要同意公共 Wi-Fi 熱點的條款和條件。
- 521: “Web 服務器已關閉。” 錯誤 521 是 Cloudflare 特定的錯誤消息。 這意味著您的 Web 瀏覽器能夠成功連接到 Cloudflare,但 Cloudflare 無法連接到源 Web 服務器。
- 525 :“SSL 握手失敗”。 錯誤 525 表示使用 Cloudflare 的域與源 Web 服務器之間的 SSL 握手失敗。 如果您遇到問題,有五種方法可以嘗試輕鬆修復錯誤 525。
在哪裡可以了解有關 HTTP 狀態代碼的更多信息
除了我們在此列表中介紹的 HTTP 狀態代碼之外,您可能還想了解一些更晦澀的狀態代碼。 您可以參考多種資源來閱讀這些稀有代碼,包括:
- 來自 Wikipedia 的 HTTP 狀態代碼的完整列表。
- 來自 Internet 工程任務組 (IETF) 的狀態代碼定義。
- RFC 7231。
了解這些狀態代碼可以幫助您解決一些獨特的問題,同時維護您自己的網站,甚至在您在其他網站上遇到這些問題時。
概括
雖然它們表面上看起來令人困惑或令人生畏,但 HTTP 狀態代碼實際上是非常有用的。 通過學習一些常見的問題,您可以更快地解決您網站上的問題。
在這篇文章中,我們定義了 40 多個您可能會遇到的 HTTP 狀態代碼。 從較溫和的 100 級和 200 級代碼到更複雜的 400 級和 500 級錯誤,理解這些消息對於維護您的網站並確保用戶可以訪問至關重要。