大家有沒有遇過找不到網頁的狀況,該網頁狀態會顯示404 page not founded.
今天這篇準備來分享HTTP狀態碼分別代表甚麼意思?
前面第八天的文章裏面有提到,通常,由HTTP客戶端發起一個請求,建立一個到伺服器指定位置埠port的TCP連線。HTTP伺服器則在那個埠port監聽客戶端的請求。一旦收到請求,伺服器會向客戶端返回一個狀態,比如"HTTP/1.1 200 OK"以及返回的內容,如請求的檔案、錯誤訊息、或者其它訊息
(英語:HTTP Status Code)是用以表示網頁伺服器超文字傳輸協定回應狀態的3位數字代碼。它由 RFC 2616 規範定義的,並得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 與 RFC 4918 等規範擴充。所有狀態碼被分為五類,狀態碼的第一個數字代表了回應的五種狀態之一。所示的訊息短語是典型的,但是可以提供任何可讀取的替代方案。 除非另有說明,狀態碼是HTTP/1.1標準(RFC 7231)的一部分。
HTTP 狀態碼表明一個 HTTP 要求是否已經被完成。
回應分為五種:
資訊回應 (Informational responses, 100–199)
成功回應 (Successful responses, 200–299)
重新導向 (Redirects, 300–399)
用戶端錯誤 (Client errors, 400–499)
伺服器端錯誤 (Server errors, 500–599)
100 Continue
此臨時回應表明,目前為止的一切完好,而用戶端應當繼續完成請求、或是在已完成請求的情況下,忽略此資訊。
101 Switching Protocol
此狀態碼乃為用戶端 Upgrade (en-US) 請求標頭發送之回應、且表明伺服器亦切換中。
102 Processing (WebDAV (en-US))
此狀態碼表明伺服器收到並處理請求中,但目前未有回應。
103 Early Hints (en-US)
此狀態碼主要與 Link (en-US) 標頭有關:它能讓用戶代理(user agent)能在伺服器準備回應前能 preloading (en-US) 資源。
200 OK
請求成功。成功的意義依照 HTTP 方法而定: GET:資源成功獲取並於訊息主體中發送。 HEAD:entity 標頭已於訊息主體中。 POST:已傳送訊息主體中的 resource describing the result of the action。 TRACE:伺服器已接收到訊息主體內含的請求訊息。
201 Created
請求成功且新的資源成功被創建,通常用於 POST 或一些 PUT 請求後的回應。
202 Accepted
此請求已經被接受但尚未處理。此狀態為非承諾性,代表 HTTP 無法在之後傳送一個非同步的回應告知請求的處理結果。最初目的為外部程序或其他伺服器處理請求的情況,或用於批次處理中。
203 Non-Authoritative Information
此回應碼表示回傳的中介資料集與並非與原始伺服器上的有效確定集合完全相同,而是來自本地或第三方的副本。除此情況外,200 OK 回應碼應該被優先使用。
300 Multiple Choice
請求擁有一個以上的回應。用戶代理或使用者應該從中選一。不過,並沒有標準的選擇方案。
301 Moved Permanently
此回應碼的意思是,請求資源的 URI 已被改變。有時候,會在回應內給予新的 URI。
400 Bad Request (en-US)
此回應意味伺服器因為收到無效語法,而無法理解請求。
401 Unauthorized (en-US)
需要授權以回應請求。它有點像 403,但這裡的授權,是有可能辦到的。
402 Payment Required (en-US) 實驗性質
此回應碼留作未來使用。一開始此碼旨在用於數位交易系統,然而,目前極少被使用,且不存在標準或慣例。
403 Forbidden
用戶端並無訪問權限,例如未被授權,所以伺服器拒絕給予應有的回應。不同於 401,伺服端知道用戶端的身份。
404 Not Found
伺服器找不到請求的資源。因為在網路上它很常出現,這回應碼也許最為人所悉。
405 Method Not Allowed (en-US)
伺服器理解此請求方法,但它被禁用或不可用。有兩個強制性方法:GET 與 HEAD,永遠不該被禁止、也不該回傳此錯誤碼。
500 Internal Server Error
伺服器端發生未知或無法處理的錯誤。
501 Not Implemented (en-US)
伺服器不支援請求的方法,僅有GET與HEAD是伺服器必須支援的方法。
502 Bad Gateway
作為閘道的伺服器,在獲取處理請求所需的回應時,得到無效回應。
504 Gateway Timeout
伺服器作為閘道器時無法及時得到回應。
505 HTTP Version Not Supported (en-US)
請求使用的 HTTP 版本不被伺服器支援。
上面都是擷取部分常見的HTTP狀態碼,如果要看更多可以直接搜尋HTTP狀態碼或是點選下方參考資料的連結。
文章一開始提到常見的網頁錯誤HTTP 404或Not Found錯誤訊息是HTTP的其中一種「標準回應訊息」(HTTP狀態碼),此訊息代表客戶端在瀏覽網頁時,伺服器無法正常提供訊息,或是伺服器無法回應且不知原因。通常是因為使用者所存取的對應網頁已被刪除、移動或從未存在。404也是網際網路上最常見的錯誤之一。
對前端工程師來說,在API串接時就需要知道HTTP狀態碼,前後端協作時,有沒有成功就是看HTTP狀態碼的回應狀態,如果200就是成功,錯誤就是看HTTP狀態碼回傳的訊息,再從回傳的HTTP的狀態碼來判斷是誰的問題,需要由後端還是前端來處理問題,所以HTTP狀態碼,對前後端工程師來說都是很重要的課題,不過如果甚麼都不知道是否可以進到串接API實作,當然是沒問題囉!只是到時候你遇到看不懂的error訊息,還是需要google啦
參考資料:
HTTP狀態碼
MDN_HTTP狀態碼
這是我第一次參加鐵人賽,希望透過這30天督促自己脫離菜味,內容預計會有JS基礎,API串接,用React完成一個可以新增、修改、刪除、查詢的網站,如果有錯誤歡迎指正,我會盡快修改。