POABOB

小小工程師的筆記分享

0%

HTTP 狀態碼簡介

定義

HTTP Status Code 是用來 表示 Server 處理請求的狀態,從 1xx、2xx、3xx、4xx、5xx 開頭分別有其不一樣的意思。

1xx 參考資訊(Informational)

解釋

代表請求已經被接收了,正在處理中,用來提醒 Client 等待 Server 的回應,再採取下個步驟。

2xx 成功(Successful)

解釋

請求不但被接收了,也被執行成功。

常用狀態碼

200OK,代表 API 正常運作的狀態,並返回資料。

201Created,代表請求的資源已經被 建立成功,通常用作於 POST 請求,並且 可以返回資料

204No Content,代表請求執行成功,但是 不用返回資料,通常用作於 DELETE 請求所使用。

3xx 重新導向Redirection

解釋

請求被接收後,發現需要 重新導向指定位置,要 Client 採取下個步驟,才能夠獲取請求。

常用狀態碼

301Moved Permanently,代表請求的資源已經被 永久性的轉址,其中不只是網址轉換這麼簡單,還包刮了 網站排名頁面權重流量 都會一併轉移,如果網站遷移了,沒有作永久性轉址的動作,搜尋引擎就會把新舊網站當作是兩個獨立不同的資源,舊網站所累積的權重也要重新來過。

302Found,代表請求的資源被 暫時性轉址,這才是單純只有地址的轉換,通常會用作於 簡易功能型的短網址 功能所使用 (有的功能很全的短網址還是有做到 SEO)。

4xx 客戶端錯誤(Client Error

解釋

代表 Client 端執行時出現錯誤,使得 Server 無法如期的處理請求。

常用狀態碼

400Bad Request,代表 Client 發出的請求是有問題的,像是 格式有誤表單驗證沒過無效的請求 等,Server 不會對其進行處理。

401Unauthorized,通常發生於需要 認證身分 的請求而無法判斷其身分,因為 HTTP 是一個 Stateless 的協定,無法記錄每一個人的身分,需要透過類似 CookieJWT 相關的驗證憑據來判斷使用者的身分。

403Forbidden,主要發生於 權限可能不足的情況,拒絕其訪問,與 401 不同的是要先有身分憑證,才可以進一步去判斷該使用者是否符合權限範圍內的操作。

404Not Found,通常就是 找不到請求的資源,只要是一個可用的網域隨便輸入 URI 都有可能發生,例如:https://www.google.com/watch

405Method Not Allowed,這種錯誤發生於請求的 URI 正確但 方法 錯誤,通常遇到這種問題,需要先確認 Restful API 定義的 方法 以及 Content-Type 傳遞的格式。

5xx 客戶端錯誤(Server Error

解釋

代表 Server 端執行時出現錯誤或是 Bug,無法完成請求。

常用狀態碼

500Internal Server Error,如果當 Server 遇到無法預料的錯誤時,就會發出此狀態碼。

502Bad Gateway,發生於 Gateway 在請求 upstream 的服務時 無法得到回應,通常 Server 端有自己做 反向代理的話可能就會發生此種情況。

503Service Unavailable,發生於 Server 處於 維護過載 暫時無法處理請求的狀態,通常會在 HTTP Header 中夾帶 Retry-After 的資訊,讓 Client 等待 Server 恢復後重新請求。

504Gateway Timeout,當我們的 Gateway 請求 upstream 超時 的時候,就會產生此錯誤,通常是 等待時間太久 才會發生。

參考資料

  • https://www.cadiis.com.tw/blog/http-status-code
  • https://melkornemesis.medium.com/http-status-code-decoded-a-guide-to-understanding-200-201-202-and-204-c08904e7f0fe
------ 本文結束 ------