5 分鐘快速掌握 HTTP 狀態碼

做爲一個開發人員,咱們天天都會花大量的時間來處理先後端間的數據請求與響應,這就須要咱們有足夠的 HTTP 知識,本節將針對 HTTP status code 展開探討。前端

1、 什麼是 HTTP 狀態碼

Fernando Doglio在他的書中 - 使用NodeJS的REST API開發將狀態代碼定義爲:git

一個數字,總結了與之相關的響應。github

當客戶端向服務器發出請求時,服務器提供HTTP(超文本傳輸協議)響應狀態代碼,這使咱們可以瞭解網站後端發生的狀況,肯定須要修復的錯誤。後端

2、HTTP 狀態碼備忘單

響應信息

1xx:臨時迴應,表示客戶端請繼續 📝

1xx 的狀態會被瀏覽器 HTTP 庫直接處理掉,不會讓上層應用知曉瀏覽器

成功

200 - OK:成功傳輸 💯

請求成功緩存

201 - Created:建立 🆕

資源已建立,服務器已確認。它對POST或PUT請求的響應頗有用。此外,新資源能夠做爲響應正文的一部分返回。服務器

204 - No content:沒有內容 👌🥚

該操做請求成功,但沒有返回任何內容。對於不須要響應主體的操做頗有用,例如 DELETE 操做。網站

205 - Reset Content:重置內容 🐾

表示請求成功,但響應報文不含實體的主體部分,可是與 204 響應不一樣在於要求請求方重置內容搜索引擎

重定向

3xx: 當服務器通知客戶端請求的目標有變化,但願客戶端進一步處理,將使用這些。代理

301 - moved permanently:永久移動 🏃

用於通知瀏覽器所請求的文件已被移動,而且它應該從服務器提供的位置請求文件,並記住該新位置以供未來參考。這隻能用於HTTP GET和HEAD請求。

此資源已移至另外一個位置,並返回該位置。當URL隨着時間的推移而變化時(尤爲是因爲版本,遷移或其餘一些破壞性更改),此標頭特別有用,保留舊標頭並將重定向返回到新位置容許舊客戶端更新其引用本身的時間。

302 - found(找到):臨時重定向 🕘

類似301; 但它是臨時重定向。它將客戶端從舊資源引導到新資源,但它不會告訴搜索引擎更新頁面的索引。告訴客戶端瀏覽另外一個URL。

304- Not Modified:客戶端緩存沒有更新 👯

產生的前提:客戶端本地已經有緩存的版本,而且在 Request 中告訴了服務端,當服務端經過時間或 tag,發現沒有更新的時候,就會返回一個不含 body 的 304 狀態碼

307 - temporary redirect:暫時移動🚶

臨時重定向,和302含義相似,可是指望客戶端保持請求方法不變向新的地址發出請求

客戶端錯誤

4xx: 定義客戶端錯誤,這是服務器認爲Web瀏覽器出錯的地方。

400 - bad request:不良請求 👎

發出的請求有問題(例如,可能缺乏一些必需的參數)。對400響應的良好補充多是開發人員可用於修復請求的錯誤消息

401 - unauthorized:未經受權 🚫🚫️

當擁有請求的用戶沒法訪問所請求的資源時,對身份驗證特別有用

403 - forbidden:禁止 ⛔️ - 資源不可訪問,但與401不一樣,身份驗證不會影響響應。

一般在請求的文件有效但文件沒法提供時發出,這一般是因爲服務器端權限問題致使Web服務器不容許將文件提供給客戶端。

401 與 403 的區別:

  • 401 我去找我的,門衛說不認識我不讓我進
  • 403 我去找我的,門衛說認識我,可是我不能進,由於我不配

404 - Not Found:請求的資源不存在 🔍🔎🔦

這多是最多見且常常出現的錯誤。當Web瀏覽器請求服務器上不存在的文件時,會發生此問題。

405 - 方法不容許 ✖️🙅

不容許在資源上使用HTTP動詞**(例如POST,GET,PUT等)** - 例如,在只讀資源上執行PUT。

418 :It's a teapot,來自 ietf 的一個愚人節玩笑 😈

服務端錯誤

5xx: 定義服務器端錯誤。儘管客戶端提供了有效請求,但這些都是服務器部分發生的錯誤。

500 - internal sever error:內部服務器錯誤 🙈

這是一個不幸的模糊通用錯誤代碼。只要認爲服務器遇到與任何更具體的錯誤代碼不匹配的錯誤,就會發出它。

501 - Not Implemented:未實現 🙀

服務器要麼不識別請求方法,要麼不支持請求。

502 - Bad Gateway:錯誤網關 🤦‍♀

當Web瀏覽器聯繫充當另外一個服務器的代理的Web服務器而且從另外一個服務器得到無效響應時,會發生這種狀況。

503 - service unavailable:服務不可用 🤭👻

這一般在服務器暫時性錯誤(暫時處於超負載或正在停機維護)的狀況下遇到,此時服務器沒法處理請求,能夠一會再試

系列文章

想看更過系列文章,點擊前往 github 博客主頁

走在最後,歡迎關注:前端瓶子君,每日更新

前端瓶子君
相關文章
相關標籤/搜索