發布於 2023-03-03

更新於 2023-03-18

程式

約2681字 (14分鐘閱讀)

[Day 15] HTTP status codes:常見的五種類型 - 嘗試 30 日寫文充版挑戰

Title Image

Photo by Ashwini Chaudhary(Monty) on Unsplash

前言 - Prologue

嘗試寫 30 天文充實版面 (跳過假日跟特休 ლ(́◕◞౪◟◕‵ლ) ) 更新文章的 Day 15

在今天的網路世界中,HTTP status codes 是 Web 開發中非常重要的一個概念。當我們在瀏覽器中輸入網址、點擊鏈接或提交表單時,都會向網站發送請求,網站通過 HTTP 協議將回應傳回給客戶端。

HTTP 狀態碼 (HTTP Status Codes) 代表了服務器回應的三位數字,它指示了客戶端的請求是否成功、需要進行重定向、存在錯誤、需要授權等情況。瞭解 HTTP status codes 的含義對於網站開發和維護至關重要,開發者需要清楚了解每一個狀態碼的含義,以便更好地設計和優化網站。

本篇文章將詳細介紹 HTTP status codes 的分類、常見的狀態碼等方面的知識。

正文 - Main text

HTTP 狀態碼 (HTTP Status Codes) 是用於指示 HTTP 協定中的請求 (request) 與回應 (response) 的三位數碼。

HTTP 狀態碼主要分為以下五類:

題外話 - URI 介紹:
[Day 16] URI、URL 和 URN 的定義和區別是什麼? - 嘗試 30 日寫文充版挑戰

以下是最常見的 HTTP 狀態碼:

  1. 200 OK
  2. 301 Moved Permanently
  3. 302 Found
  4. 304 Not Modified
  5. 400 Bad Request
  6. 401 Unauthorized
  7. 403 Forbidden
  8. 404 Not Found
  9. 500 Internal Server Error
  10. 503 Service Unavailable

在使用 HTTP 協定時,我們需要根據狀態碼來了解服務器的回應情況,並根據不同的狀態碼來處理請求。

Informational response 1xx
Status codesDescription
100 Continue伺服器已接收並正在處理請求,但尚未完成,客戶端應繼續等待。
101 Switching Protocols伺服器已經理解請求,並正在切換協議,通常是 HTTP/1.1 向 HTTP/2 的升級。
102 Processing伺服器已接收並正在處理請求,但尚未完成,客戶端可以繼續等待,但不應發送新的請求。
103 Early Hints伺服器在等待完整的請求之前,已經可以發送一些回應標頭,以便客戶端開始做一些工作。
Successful 2xx
Status codesDescription
200 OK請求已成功,伺服器返回的資源符合要求。
201 Created請求已成功,伺服器創建了一個新的資源。
202 Accepted請求已被接受,但伺服器還沒有完成處理。
203 Non-Authoritative Information請求已成功,但返回的資源不是來自原始伺服器。
204 No Content請求已成功,但伺服器沒有返回任何資料。
205 Reset Content請求已成功,伺服器要求客戶端重置視圖。
206 Partial Content請求已成功,伺服器僅返回部分資源。
207 Multi-Status請求已成功,但伺服器返回的實體內容包含一個 XML 標籤,標識了多個狀態。
208 Already Reported伺服器已經完成對資源的請求,並且請求者應該更新其瀏覽器頁面,其中的資源可以被視為已更改。
226 IM Used請求已成功,伺服器回傳了相應的資料,這些資料是通過將實體轉換成串流來發送的。
Redirection 3xx
Status codesDescription
300 Multiple Choices請求的資源存在多個選擇,客戶端應該從中選擇一個進行重定向。
301 Moved Permanently請求的資源已永久移動到新的位置,客戶端應該更新其引用位置。
302 Found請求的資源暫時移動到新的位置,客戶端應該使用新的位置重新發送請求。
303 See Other請求的資源可在不同的URI下找到,客戶端應該使用新的URI發送請求。
304 Not Modified請求的資源未發生變化,用戶端可以使用自己本地的快取版本。
305 Use Proxy請求應該使用指定的代理伺服器進行。
306 Switch Proxy在初版中,此狀態碼被用作「未使用:此狀態碼被保留,不再使用。」
307 Temporary Redirect請求的資源暫時移動到新的位置,客戶端應該使用新的位置重新發送請求。
308 Permanent Redirect請求的資源已永久移動到新的位置,所有未來的請求應該使用新的 URL 進行。
Client Error 4xx
Status codesDescription
400 Bad Request請求無效,伺服器無法理解。
401 Unauthorized請求需要驗證,但客戶端未提供有效的認證信息。
402 Payment Required保留,將來可能使用。
403 Forbidden伺服器拒絕了客戶端的請求,因為客戶端沒有訪問該資源的權限。
404 Not Found伺服器無法找到請求的資源。
405 Method Not Allowed請求中指定的方法不允許對指定的資源進行操作。
406 Not Acceptable客戶端指定的接受資料格式不可用。
407 Proxy Authentication Required要求透過代理進行身份驗證,代理將返回一個 Proxy-Authenticate 標頭以供客戶端進**行身份驗證。
408 Request Timeout客戶端在伺服器等待請求時超時。
409 Conflict請求衝突,由於資源狀態的不一致,請求無法完成。
410 Gone要求的資源不再可用,並且不知道轉發地址。通常會返回此狀態碼來表示某些已刪除的網頁或資源。
411 Length Required請求需要包含 Content-Length 標頭。
412 Precondition Failed請求條件失敗,如指定的 If-Match 標頭與當前服務器的 ETag 值不匹配。
413 Payload Too Large請求實體過大,超出了伺服器的限制。
414 URI Too Long請求的 URI 長度超出了伺服器的限制。
415 Unsupported Media Type請求的媒體類型不受支援,例如請求的方法不支援指定的媒體類型。
416 Range Not Satisfiable伺服器無法滿足請求中指定的範圍,例如請求中指定的 Range 大於檔案大小。
417 Expectation Failed伺服器無法滿足 Expect 要求標頭中指定的期望值。
418 I'm a teapot伺服器拒絕了客戶端想要沖泡茶壺的請求(是一個玩笑性質的狀態碼)。
421 Misdirected Request請求被伺服器接收,但因為指向資源的連結異常,無法完成處理。
422 Unprocessable Entity伺服器無法處理請求,因為該請求包含語法錯誤或無法處理的實體。
423 Locked當前資源被鎖定,導致請求失敗。
424 Failed Dependency請求失敗,因為它需要另一個請求的成功。
425 Too Early伺服器拒絕該請求,因為它過早,還不能處理。
426 Upgrade Required伺服器拒絕了請求,因為客戶端需要升級以繼續使用。
428 Precondition Required伺服器要求必須滿足一定的條件才能處理該請求。
429 Too Many Requests該用戶端已經發送了太多的請求,伺服器拒絕處理請求。
431 Request Header Fields Too Large該請求中的標頭字段太大,伺服器拒絕處理請求。
451 Unavailable For Legal Reasons該資源因法律原因不可用。
Server Error 5xx
Status codesDescription
500 Internal Server Error伺服器在處理請求時遇到了錯誤,這可能是由於程式碼錯誤、伺服器超載、資料庫錯誤等問題引起的。
501 Not Implemented伺服器無法理解或不支援請求的功能,可能是因為該功能還未實現或不支援。
502 Bad Gateway作為閘道或代理角色的伺服器,從上游伺服器或其他資源獲得無效的回應。
503 Service Unavailable伺服器暫時無法處理請求,通常是由於伺服器過載、維護或升級等原因引起的。
504 Gateway Timeout作為閘道或代理角色的伺服器,在等待上游伺服器或其他資源回應時,超過了時間限制。
505 HTTP Version Not Supported伺服器不支援請求中所使用的 HTTP 版本。
506 Variant Also Negotiates與 300 多重選擇(Multiple Choices)相似,此狀態碼指出伺服器有一個內部配置問題,因此回傳的資源與用戶端要求的不符合。
507 Insufficient Storage伺服器無法處理請求,因為它無法存儲所需的內容。
508 Loop Detected伺服器檢測到無限循環,通常是由於重定向引起的。
510 Not Extended伺服器不支援請求中要求的擴展功能。
511 Network Authentication Required客戶端需要進行身份驗證才能繼續進行請求,這通常用於需要透過 Wi-Fi 網絡登錄使用者資訊的公共 Wi-Fi 熱點等場合。

參考資料 - Reference

[1] List of HTTP status codes - Wikipedia

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes

有關 HTTP Status Codes 的更多信息

[2] HTTP Status Codes Glossary - WebFX

https://www.webfx.com/web-development/glossary/http-status-codes/

HTTP Status Codes 測驗

[3] Quiz: HTTP Status Code · All Interview

https://niisar.gitbooks.io/cs/content/http-status-code-quiz.html

後記 - Epilogue

在這個數字化時代,我們時常需要透過網路與伺服器進行資訊交流,而 HTTP Status Code 則是一個非常重要的指標,它可以告訴我們這次的請求是否成功,以及若有問題的話,問題出在哪裡?因此,對於網路應用程式的開發者、系統管理員以及網路使用者而言,了解 HTTP 狀態碼的意義以及使用情境是非常重要的。

在統整這篇關於 HTTP Status Code 的文章時,我對於狀態碼的分類和意義有了更深入的了解。雖然 HTTP 狀態碼在日常使用中不太會被注意到,通常遇到錯誤才會去查或是直接看錯誤代碼後的英文,但它們在網際網路通訊中扮演了非常重要的角色。

下禮拜一將會繼續寫 URL、URI 與 URL 的介紹與差異。

[Day 15] HTTP status codes:常見的五種類型 - 嘗試 30 日寫文充版挑戰

https:///blog/26

作者

Kama

Read more from 程式
lightbox-image
Toggle Button - Red Pandas Icons by svgrepo.com

Copyrights © 2023 Kama, All Rights Reserved.