在 Web 開發領域,HTTP 錯誤代碼對影響使用者體驗和網站聲譽起著至關重要的作用。在本文中,我們將考慮伺服器錯誤代碼的完整列表,分析它們的含義,並學習如何有效地解釋伺服器回應程式碼以解決問題並優化 Web 應用程式的效能。
什麼是 HTTP 回應代碼
HTTP 回應代碼是 Web 伺服器的語言,它將瀏覽器請求轉換為可理解的指令。這就像一位詩人回答虛擬的問題,賦予它們意義和方向。回應代碼並不總是 HTTP 錯誤代碼。例如「200 OK」表示一切正常,但 HTTP 錯誤「404 Not Found」表示頁面在虛擬空間中遺失。每個程式碼都是伺服器狀態的獨特表達,對其進行解碼可以讓我們了解虛擬世界另一端正在發生的事情。
1xx 代碼(資訊)
HTTP 協定中的 1xx 狀態碼是伺服器與用戶端對話的一種第一個環節。它們不提供對請求的完整回應,而是提供有關當前狀態的信息,從而使資料交換更加有效率。讓我們仔細看看它們:
100 Continue。 HTTP回應代碼,伺服器向使用者發出綠燈訊號,允許使用者安全地繼續發送大型請求。
101 協定切換。伺服器會告知客戶端它正在更改遊戲規則,例如,從 HTTP 切換到更安全的 HTTPS。在這種情況下,“Upgrade”標頭用於協定更改。
102 正在處理中。此程式碼表示伺服器已接受請求,但仍在忙於執行複雜的操作。
103 早期提示。伺服器在發送主要回應之前,會向客戶端發送幾個指示性標頭,警告客戶端一些可能在不久的將來會用到的信息。
2xx 代碼(成功)
2xx 群組內的 HTTP 錯誤代碼表示伺服器請求成功。它們本質上充當了網路通訊範圍內的“綠燈”,確認一切都按計劃進行並已成功完成。
200 OK。當伺服器成功處理 GET 請求並傳回所需資料時,會傳回此狀態碼。 “Content-Type”標頭報告回應中的內容類型。它只是告知客戶端請求已成功。
201 創建成功。伺服器在此處宣布已創建新資源。
202 Accepted。伺服器告知用戶請求已被接受,但需要一些時間才能回應。
203 非權威資訊。此程式碼向客戶提供可能並非官方的數據,但可用於比較。
204 無內容。伺服器已處理請求,但不傳回任何其他內容。
205 重置內容。此處指示客戶端在發送後重置目前視圖或資料。
206 部分內容。這種情況表示回應僅包含請求內容的一部分。 「Content-Range」標頭指示了部分內容的範圍。
207 多狀態。伺服器已成功完成來自客戶端的多操作請求,回應中包含有關每個操作狀態的資訊。
226 IM 已使用。此程式碼表示伺服器使用了增量元資料 (IM) 方法,並且僅將修改後的資源部分傳遞給客戶端。
3xx 程式碼(重定向)
HTTP 協定中的 3xx 程式碼就像指針,引導使用者到達新的資源位置。它們通知客戶端必須採取後續步驟來取得請求的內容或重新導向到另一個資源。讓我們深入了解每一個細節:
300 多項選擇題。客戶端收到訊號,表示資源有多個可能的位置,並需要做出選擇。在目前情況下,「位置」標頭可能指示資源的備選方案。
301 永久遷移。伺服器向使用者報告,資源已永久遷移到另一個位置。
302 Found。此 HTTP 狀態碼類似於暫時重定向。伺服器通知訪客,資源暫時可透過另一個 URL 取得。 「Location」標頭指向暫時重定向的新 URL。
303 查看其他。用戶端被告知該資源位於不同的 URL,必須向該新位址發出 GET 請求。
304 未修改。此狀態告知客戶端資源自上次請求以來未發生任何更改,無需再次下載。發出請求時,會使用「If-Modified-Since」標頭來檢查資源是否已被修改。
305 使用代理。作為回應,伺服器報告說它應該使用指定的代理來存取請求的資源。
306(保留) ——該代碼已被保留,但實際上未使用。
307 暫時重定向。此程式碼類似於 302 Found,但要求用戶端保持在原始請求中使用的請求方法中。
308 永久重定向。表示資源已永久移轉到新的 URI,客戶端應在所有後續請求中使用新的 URI。
4xx HTTP 錯誤(客戶端錯誤)
HTTP 4xx 錯誤代碼表示客戶端錯誤。這意味著問題出在用戶端,例如網頁瀏覽器或應用程式。
400 錯誤請求。由於客戶端存在語法錯誤、無效資料或其他錯誤,伺服器無法處理該請求。
401 未授權。由於客戶端存在語法錯誤、無效資料或其他錯誤,伺服器無法處理請求。
402 需要付款。該代碼目前未激活,僅供將來使用。這可能意味著將來訪問該資源之前需要付費。
HTTP 錯誤 403 禁止存取。客戶端沒有足夠的權限存取請求的資源。
404 未找到。伺服器上不存在請求的資源。這是最常見的用戶錯誤之一。
405 方法不允許。伺服器不支援此資源的指定請求方法。 「Allow」標頭指示了資源允許的方法。使用此代碼,
406 不可接受。伺服器無法提供客戶端可以接受的資料格式。
407 需要代理身份驗證。存取所請求的資源需要透過代理伺服器進行身份驗證。
408 請求超時。伺服器正在等待接收來自客戶端的請求,但逾時了。 「Retry-After」標頭可能指示請求可以重試的時間。
409 衝突錯誤。由於與目前資源狀態衝突,請求無法完成。
410 已刪除。請求的資源之前存在,但現在已被刪除,預計不會恢復。
411 長度必填。伺服器要求在請求中指定內容長度;缺少此資訊將被視為錯誤。
412 前提條件失敗。請求中的某個前提條件未滿足,導致請求無法執行。
413 請求負載過大。請求資料的大小超過了伺服器限制。
414 URI 過長。請求中的 URI 長度超過了可接受的限制。
415 不支援的媒體類型。伺服器無法處理請求中提供的資料類型。
416 範圍不滿足。 HTTP 錯誤,請求的範圍與目前伺服器資料不符。
417 預期失敗。 「Expect」標頭中的預期條件未被滿足。
418 我是茶壺。這段程式碼只是個玩笑,並不會對使用者或伺服器造成任何實際影響,也不是一個真正的錯誤。它表示服務器是茶壺,無法煮咖啡。
421 請求重定向錯誤。由於請求或伺服器配置錯誤,伺服器不處理該請求。
422 無法處理的實體。伺服器理解請求,但由於資料錯誤而無法處理。
423 已鎖定。資源已被阻塞,無法處理。
424 依賴關係失敗。該請求依賴於另一個未執行的請求。
425 請求過早。由於請求過早到達,伺服器尚未準備好處理該請求。
錯誤代碼 426:需要升級。伺服器需要使用更高級的協定來處理此請求。
428 需要前提條件。伺服器要求在請求中指定某些前提條件。
429 請求過多。客戶端在短時間內發送的請求太多,超過了伺服器的限制。
431 請求標頭字段過大。請求頭超過了允許的最大大小。
449 重試。表示目前伺服器無法處理該請求,但其他伺服器可以成功處理該請求,客戶端應使用新的 URI 重試該請求。
451 因法律原因不可用。該資源因法律因素無法提供。
499 客戶端關閉請求。伺服器已收到請求,但客戶端在處理完成前關閉了連線。
HTTP 5xx 錯誤(伺服器錯誤)
HTTP 5xx 錯誤代碼表示伺服器出現問題。這些程式碼表示伺服器端出現了問題,導致伺服器無法以正確的方式處理使用者的請求。讓我們仔細看看它們:
HTTP 錯誤 500 內部伺服器錯誤。伺服器遇到意外情況,導致請求無法完成。 “Server”標頭可能指示發生錯誤的伺服器。
501 未實現。伺服器不支援處理客戶端請求所需的功能。 “Via”標頭可能指示發生錯誤的代理伺服器。
502 Bad Gateway。此程式碼表示充當代理的伺服器從另一台伺服器收到了錯誤的回應。
HTTP錯誤503:服務不可用。伺服器暫時無法處理請求。
504 網關逾時。充當代理的伺服器未及時收到來自另一台伺服器的回應。
505 HTTP 版本不支援。伺服器不支援請求中指定的 HTTP 協定版本。作為備用方案,可以使用「Upgrade」標頭來指示支援的協定。
506 變體也進行協商。此狀態在 HTTP/1.1 中未使用;但是,如果伺服器偵測到導致內容協商歧義的內部配置,則可能會使用此回應。
507 儲存空間不足。由於伺服器儲存空間不足,伺服器無法滿足請求。
偵測到 508 循環錯誤。伺服器在處理請求時偵測到循環,為了避免無限循環,拒絕完成請求。
509 頻寬限制超出。當伺服器頻寬因請求或流量過大而超出限制時,會發生此錯誤。
510 未續期。客戶必須申請額外的分機號碼才能繼續要求。
511 需要網路身份驗證。客戶端必須進行身份驗證才能存取網路。
如何檢查頁面狀態代碼
在本節中,我們將考慮檢查頁面狀態代碼的三種主要方法:透過命令列、使用 Web 瀏覽器和使用獨立的線上服務。每種方法都有各自的優點,可以在不同情況下發揮作用。
透過命令列檢查伺服器回應
命令列提供了一種方便的方法來檢查頁面狀態代碼,而無需使用網頁瀏覽器。對於此方法,您需要打開命令列並使用以下命令:
curl -I http://page-address
此命令向指定的 URL 發送 HEAD 請求(僅標頭請求)並顯示包括 HTTP 狀態代碼在內的資訊:
上面的例子顯示了成功的回應代碼。如果回應包含錯誤代碼(例如 404 Not Found HTTP 錯誤),結果將類似:
透過瀏覽器控制台檢查伺服器回應
網頁瀏覽器開發者控制台提供了進行各種操作的工具,包括檢查頁面狀態代碼。為了查看伺服器回應中的 HTTP 程式碼,您需要根據所使用的瀏覽器開啟開發人員控制台 (Ctrl+Shift+K) 或 (Ctrl+shift+J)。接下來,選擇“網頁”部分並載入所需的頁面:
使用獨立工具檢查伺服器回應
有許多獨立的線上服務提供工具來檢查網站頁面的狀態代碼。這些服務通常可以讓您快速了解網站的可用性和效能概況。它們的工作原理都相同。例如,我們將以最受歡迎的資源——httpstatus.io 為例。
首先你需要打開該服務本身,然後輸入你需要尋找答案的頁面位址,並請求驗證:
結果將顯示在頁面底部:
結語
總之,應該強調的是,理解並能夠讀取 HTTP 錯誤代碼是任何參與 Web 開發和伺服器維護的人的關鍵技能。當我們找出每個錯誤並探索檢測它們的工具時,我們就明白為什麼有效地管理這些 Web 服務方面如此重要。