什麼是 HTTP 狀態碼(HTTP Status Codes)?
HTTP 狀態碼是伺服器對瀏覽器請求回應(HTTP Response)的狀態,由 RFC 2616 規範定義的,並得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 與 RFC 4918 等規範擴充。伺服器用一個三位數的代碼來回應瀏覽器的請求,狀態的分類可區分三個層級,第一個數字為大類、第二個數字為中類、第三個數字為小類。
了解狀態代碼以及如何使用它們將有助於快速診斷網站錯誤
HTTP 狀態碼大致分成 5 類
1xx Informationa - 參考資訊
2xx Successful - 成功
3xx Redirection - 重新導向
4xx Client Error - 用戶端錯誤
5xx Server Error - 伺服器錯誤
1xx Informational 參考資訊
這些狀態碼代表請求已被接受,需要繼續處理,這類回應是臨時回應,所以在接收一般的回應之前,用戶端應準備接收一個或多個 1xx 的回應,等待伺服器採取進一步行動。
100 Continue - 繼續執行所發出的請求
101 Switching Protocols - 切換通訊協定
2xx Successful 成功
這類的狀態碼表示伺服器成功接收到用戶端的要求、理解並接受。
200 OK - 確定。用戶端要求成功
201 Created - 請求已經被實現
202 Accepted - 伺服器已接受請求,但尚未處理
203 Non-Authoritative Information - 非授權資訊
204 No Content - 無內容,伺服器成功處理了請求,沒有返回任何內容
205 Reset Content - 重設內容,伺服器成功處理了請求,但沒有返回任何內容。與 204 回應不同,此回應要求請求者重設文件視圖
206 Partial Content - 伺服器已經成功處理了部分 GET 請求
207 Multi-Status - 代表之後的訊息體將是一個 XML 訊息,並且可能依照之前子請求數量的不同,包含一系列獨立的回應代碼
208 Already Reported - DAV 繫結的成員已經在(多狀態)回應之前的部分被列舉,且未被再次包含
226 IM Used - 伺服器已經滿足了對資源的請求,對實體請求的一個或多個實體操作的結果表示
3xx Redirection 重新導向
用戶端瀏覽器必須採取進一步的操作才能完成要求。這些狀態碼用來重新導向,例如瀏覽器可能必須重新發出 HTTP Request 要求伺服器上的不同頁面。客戶端應當自動監測無限迴圈重新導向(例如:A→B→C→……→A 或 A→A),因為這會導致伺服器和客戶端大量不必要的資源消耗。按照 HTTP/1.0 版規範的建議,瀏覽器不應自動存取超過 5 次的重新導向。
300 Multiple Choices - 被請求的資源有一系列可供選擇的回饋資訊,每個都有自己特定的位址和瀏覽器驅動的商議資訊。使用者或瀏覽器能夠自行選擇一個首選的位址進行重新導向
301 Moved Permanently - 要求的網頁已經永久改變網址。此狀態要求用戶端未來在連結此網址時應該導向至指定的 URI
302 Found - 要求客戶端執行臨時重新導向
303 See Other - 通知用戶端使用 GET 連到另一個 URI 去查看
304 Not Modified - 未修改。用戶端要求該網頁時,其內容並沒有變更
305 Use Proxy - 要求的網頁必須透過 Server 指定的 proxy 才能查看(需透過 Location 標頭)
306 Switch Proxy - 在最新版的規範中,306 狀態碼已經不再被使用。最初是指「後續請求應使用指定的代理」
307 Temporary Redirect - 在這種情況下,請求應該與另一個 URI 重複,但後續的請求應仍使用原始的 URI。 與 302 相反,當重新發出原始請求時,不允許更改請求方法。 例如,應該使用另一個 POST 請求來重複 POST 請求
4xx Client Error 用戶端錯誤
這代表錯誤發生,且這錯誤的發生的原因跟「用戶端」有關,妨礙了伺服器的處理。例如:用戶端可能連結到不存在的頁面、用戶端的權限不足、或可能未提供有效的驗證資訊(輸入的帳號、密碼錯誤)。
400 Bad Request - 錯誤的要求
401 Unauthorized - 拒絕存取
402 Payment Required - 該狀態碼是為了將來可能的需求而預留的。該狀態碼最初的意圖可能被用作某種形式的數字現金或線上支付方案的一部分,但幾乎沒有哪家服務商使用,而且這個狀態碼通常不被使用
403 Forbidden - 伺服器已經理解請求,但是拒絕執行它
404 Not Found - 找不到,請求失敗,請求所希望得到的資源未被在伺服器上發現,但允許使用者的後續請求
405 Method Not Allowed - 用來存取這個頁面的 HTTP 動詞不受允許 (方法不受允許)
406 Not Acceptable - 用戶端瀏覽器不接受要求頁面的 MIME 類型
407 Proxy Authentication Required - 需要 Proxy 驗證
408 Request Timeout - 請求逾時
409 Conflict - 資源狀態衝突
410 Gone - 資源已不存在且無轉址資訊
411 Length Required - 要求的 Content-Length 沒有定義
412 Precondition Failed - 指定條件失敗
413 Request Entity Too Large - 要求的實體太大
414 Request-URI Too Long - 要求 URI 太長。會因伺服器或瀏覽器而異,建議 2048 字元以下比較保險
415 Unsupported Media Type - 不支援的媒體類型
416 Requested Range Not Satisfiable - 無法滿足要求的範圍
417 Expectation Failed - 執行失敗
5xx Server Error 伺服器錯誤
這代表錯誤發生,且這錯誤發生的原因跟「伺服器」有關。伺服器因為發生錯誤或例外狀況(Exception)而無法完成要求(Request)時,就會回應 5xx 的錯誤,且這肯定跟伺服器有關。
500 Internal Server Error - 內部伺服器錯誤。
501 Not Implemented – 標頭值指定未實作的設定。
502 Bad Gateway - Web 伺服器在作為閘道或 Proxy 時收到無效的回應。
503 Service Unavailable - 服務無法使用。 這是 IIS 6.0 專用的錯誤碼。
504 Gateway Timeout - 閘道逾時。
505 HTTP Version Not Supported - 不支援的 HTTP 版本。
參考文獻:
🚀實體工作坊分享
玩轉 Web頁面的前端技術(HTML/CSS/JS) 一日體驗課
最近時賦學苑開了實體體驗課,即使你對程式碼沒有概念也能上手!Lala 會帶你一起做出一個個人品牌形象網站,帶你快速了解前端的開發流程,快跟我們一起玩轉 Web 吧!🚀線上課程分享
線上課程可以加速學習的時間,省去了不少看文件的時間XD,以下是我推薦的一些課程想學習更多關於前後端的線上課程,可以參考看看。
Hahow
Hahow 有各式各樣類型的課程,而且是無限次數觀看,對學生或上班族而言,不用擔心被時間綁住六角學院
如果你是初學者,非常推薦六角學院哦!剛開始轉職也是上了六角的課,非常的淺顯易懂,最重要的是,隨時還有線上的助教幫你解決問題!
Udemy
Udemy 裡的課程非常的多,品質普遍不錯,且價格都滿實惠的,CP值很高!也是很多工程師推薦的線上課程網站。