從 Compat 2021 到 Interop 2022
Compat 2021 致力於消除瀏覽器相容性問題的五個主要焦點領域,使開發者可以在這些領域上自信地建立可靠的基礎。而 Interop 2022 的重點是在15個開發者認為在不同瀏覽器之間缺失或存在相容性問題時尤其困擾的領域上制定基準。約 2216 字 (12分鐘閱讀)

嘗試寫 30 天文充實版面
(跳過假日跟特休 ლ(́◕◞౪◟◕‵ლ) )更新文章的 Day 15
在今天的網路世界中,HTTP status codes 是 Web 開發中非常重要的一個概念。當我們在瀏覽器中輸入網址、點擊鏈接或提交表單時,都會向網站發送請求,網站通過 HTTP 協議將回應傳回給客戶端。
HTTP 狀態碼 (HTTP Status Codes) 代表了服務器回應的三位數字,它指示了客戶端的請求是否成功、需要進行重定向、存在錯誤、需要授權等情況。瞭解 HTTP status codes 的含義對於網站開發和維護至關重要,開發者需要清楚了解每一個狀態碼的含義,以便更好地設計和優化網站。
本篇文章將詳細介紹 HTTP status codes 的分類、常見的狀態碼等方面的知識。
HTTP 狀態碼 (HTTP Status Codes) 是用於指示 HTTP 協定中的請求 (request) 與回應 (response) 的三位數碼。
HTTP 狀態碼主要分為以下五類:
題外話 - URI 介紹:
[Day 16] URI、URL 和 URN 的定義和區別是什麼? - 嘗試 30 日寫文充版挑戰
以下是最常見的 HTTP 狀態碼:
在使用 HTTP 協定時,我們需要根據狀態碼來了解服務器的回應情況,並根據不同的狀態碼來處理請求。
Status codes | Description |
---|---|
100 Continue | 伺服器已接收並正在處理請求,但尚未完成,客戶端應繼續等待。 |
101 Switching Protocols | 伺服器已經理解請求,並正在切換協議,通常是 HTTP/1.1 向 HTTP/2 的升級。 |
102 Processing | 伺服器已接收並正在處理請求,但尚未完成,客戶端可以繼續等待,但不應發送新的請求。 |
103 Early Hints | 伺服器在等待完整的請求之前,已經可以發送一些回應標頭,以便客戶端開始做一些工作。 |
Status codes | Description |
---|---|
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 | 請求已成功,伺服器回傳了相應的資料,這些資料是通過將實體轉換成串流來發送的。 |
Status codes | Description |
---|---|
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 進行。 |
Status codes | Description |
---|---|
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 | 該資源因法律原因不可用。 |
Status codes | Description |
---|---|
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 熱點等場合。 |
[1] List of HTTP status codes - Wikipedia
https://en.wikipedia.org/wiki/List_of_HTTP_status_codes
[2] HTTP Status Codes Glossary - WebFX
https://www.webfx.com/web-development/glossary/http-status-codes/
[3] Quiz: HTTP Status Code · All Interview
https://niisar.gitbooks.io/cs/content/http-status-code-quiz.html
在這個數字化時代,我們時常需要透過網路與伺服器進行資訊交流,而 HTTP Status Code 則是一個非常重要的指標,它可以告訴我們這次的請求是否成功,以及若有問題的話,問題出在哪裡?因此,對於網路應用程式的開發者、系統管理員以及網路使用者而言,了解 HTTP 狀態碼的意義以及使用情境是非常重要的。
在統整這篇關於 HTTP Status Code 的文章時,我對於狀態碼的分類和意義有了更深入的了解。雖然 HTTP 狀態碼在日常使用中不太會被注意到,通常遇到錯誤才會去查或是直接看錯誤代碼後的英文,但它們在網際網路通訊中扮演了非常重要的角色。
下禮拜一將會繼續寫 URL、URI 與 URL 的介紹與差異。
[Day 15] HTTP status codes:常見的五種類型 - 嘗試 30 日寫文充版挑戰
作者
約 2216 字 (12分鐘閱讀)
約 2161 字 (11分鐘閱讀)
約 1851 字 (10分鐘閱讀)