<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          http響應(yīng)狀態(tài)碼該怎么用?

          共 3187字,需瀏覽 7分鐘

           ·

          2021-04-27 20:12


          點擊上方藍色“邁莫coding”,選擇“設(shè)為星標”

           

          前兩講我們分別聊了http的含義及其http報文那些事兒,知道了作為客戶端如何將數(shù)據(jù)發(fā)送給服務(wù)端,知道了請求報文的字段屬性含義。

           

          如果對http報文不了解的話,推薦看一下我之前寫的文章......


          計網(wǎng)以往文章

           

           


          前言


           

          客戶端和服務(wù)端進行數(shù)據(jù)交互時,當服務(wù)端收到客戶端傳輸過來的數(shù)據(jù),解析后進行處理,最終拼接成一個響應(yīng)報文傳輸給客戶端。

           

          現(xiàn)在我們回顧一下響應(yīng)報文中響應(yīng)行的組成部分:

           

           

          由圖可知,響應(yīng)行由三部分組成:

           

          • 版本號:http協(xié)議版本號。

           

          • 狀態(tài)碼:一個三位數(shù),用代碼的形式表示處理的結(jié)果,比如 200 是成功,500 是服務(wù)器錯誤。

           

          • 原因:作為數(shù)字狀態(tài)碼補充,是更詳細的解釋文字,幫助人理解原因。

           

          舉例說明一下響應(yīng)行:

           

          HTTP/1.1 200 OK
           

          這表示:瀏覽器你好,我已經(jīng)處理完了你的請求,這個報文使用的協(xié)議版本號是 1.1,狀態(tài)碼是 200,一切OK?!?/span>

           

          對于客戶端來說,響應(yīng)行中最有用的是狀態(tài)碼,客戶端可以通過不同的狀態(tài)碼進行不同的邏輯處理。它是一個十進制數(shù)字,以代碼的形式表示服務(wù)器對請求的處理結(jié)果,就像我們通常編寫程序時函數(shù)返回的錯誤碼一樣。


          狀態(tài)碼

           

          目前 RFC 標準里規(guī)定的狀態(tài)碼是三位數(shù),所以取值范圍就是從 000 到 999。

           

          RFC 標準把狀態(tài)碼分成了五類,用數(shù)字的第一位表示分類,而 0~99 不用,這樣狀態(tài)碼的實際可用范圍就大大縮小了,由 000~999 變成了 100~599。

           

          這五類的具體含義:

           

          • 1×× : 請求處理中,請求已被接受,正在處理

           

          • 2×× : 請求成功,請求被成功處理

           

          • 3×× : 重定向,要完成請求必須進行進一步處理

           

          • 4×× : 客戶端錯誤,請求不合法

           

          • 5×× : 服務(wù)器端錯誤,服務(wù)器不能處理合法請求

           

          客戶端作為請求方,會將數(shù)據(jù)傳輸給服務(wù)端,服務(wù)端解析完成后,會通過響應(yīng)報文方式傳輸給客戶端,客戶端獲取響應(yīng)報文后,通過響應(yīng)行中的狀態(tài)碼,開啟進一步的操作。通過狀態(tài)碼可以知道服務(wù)端是否處理成功失敗,是否需要重新發(fā)送......

           


          狀態(tài)碼 1XX

           

          1××類狀態(tài)碼屬于提示信息,是協(xié)議處理的中間狀態(tài),實際能夠用到的時候很少。

           


          狀態(tài)碼 2XX

           

          2XX 類狀態(tài)碼表示服務(wù)端已成功接收數(shù)據(jù)且處理完成,這也是客戶端想見到的狀態(tài)碼

           

          • 200 OK

           

          200 狀態(tài)碼表示一切正常,服務(wù)端如客戶端期望哪有返回響應(yīng)結(jié)果。

           

           

          • 204 Not Content

           

          204 狀態(tài)碼是另一個很常見的成功狀態(tài)碼,它的含義與“200 OK”基本相同,但響應(yīng)頭后沒有 body 數(shù)據(jù)。所以對于 Web 服務(wù)器來說,正確地區(qū)分 200 和 204是很必要的。

           

          • 206 partial Content

           

          206 partial Content 是HTTP 分塊下載或斷點續(xù)傳的基礎(chǔ),在客戶端發(fā)送“范圍請求”、要求獲取資源的部分數(shù)據(jù)時出現(xiàn),它與 200 一樣,也是服務(wù)器成功處理了請求,但 body 里的數(shù)據(jù)不是資源的全部,而是其中的一部分。

           

          狀態(tài)碼 206 通常還會伴隨著頭字段“Content-Range”,表示響應(yīng)報文里 body 數(shù)據(jù)的具體范圍,供客戶端確認,例如“Content-Range: bytes 0-99/2000”,意思是此次獲取的是總計 2000 個字節(jié)的前 100 個字節(jié)。

           


          狀態(tài)碼 3XX

           

          3XX 狀態(tài)碼表示客戶端請求的資源發(fā)生了改動,需要使用新的URI來訪問資源。

           

          • 301 Moved Permanently

           

          301 Moved Permanently 被稱為“永久重定向”,也就是說請求資源已經(jīng)不存在,需要使用新的RUI訪問。

           

          • 302  Found

           

          302  Found 被稱為"臨時重定向",也就是說請求資源還在,暫時使用新的URI訪問。但后續(xù)仍然使用舊URI進行訪問。

           

          狀態(tài)碼 4XX

           

          4XX 狀態(tài)碼表示客戶端的錯誤,請求不合法。

           

          • 400 Bad Request

           

          400 Bad Request表示客戶端中有語法錯誤,不能被服務(wù)器理解。

           

          • 403 Forbidden

           

          403 Forbidden 表示服務(wù)端收到了客戶端的請求,但拒絕提供服務(wù)。原因可能多種多樣,例如信息敏感、法律禁止等。

           

          • 404  Not Found

           

          404  Not Found 可能是我們最常看見也是最不愿意看到的一個狀態(tài)碼,它的原意是資源在本服務(wù)器上未找到,所以無法提供給客戶端。

           

          狀態(tài)碼 5XX

           

          5××類狀態(tài)碼表示客戶端請求報文正確,但服務(wù)器在處理時內(nèi)部發(fā)生了錯誤,無法返回應(yīng)有的響應(yīng)數(shù)據(jù),是服務(wù)器端的“錯誤碼”。

           

          • 500 Internal Server Error

           

          500 Internal Server Error 與 400 類似,也是一個通用的錯誤碼,服務(wù)器究竟發(fā)生了什么錯誤我們是不知道的。不過對于服務(wù)器來說這應(yīng)該算是好事,通常不應(yīng)該把服務(wù)器內(nèi)部的詳細信息,例如出錯的函數(shù)調(diào)用棧告訴外界。雖然不利于調(diào)試,但能夠防止黑客的窺探或者分析

           

          • 502 Bad Gateway

           

          502 Bad Gateway 常是服務(wù)器作為網(wǎng)關(guān)或者代理時返回的錯誤碼,表示服務(wù)器自身工作正常,訪問后端服務(wù)器時發(fā)生了錯誤,但具體的錯誤原因也是不知道的

           

          • 503 Server Unavailable

           

          503 Server Unavailable 表示服務(wù)器當前很忙,暫時無法響應(yīng)服務(wù),我們上網(wǎng)時有時候遇到的“網(wǎng)絡(luò)服務(wù)正忙,請稍后重試”的提示信息就是狀態(tài)碼 503

           


          小結(jié)


           

          • 狀態(tài)碼是用來告知客戶端該請求是否處理成功

           

          • 狀態(tài)碼是十進制的三位數(shù),分為五類,從 100 到 599

           

          • 2××類狀態(tài)碼表示成功,常用的有 200、204、206

           

          • 3××類狀態(tài)碼表示重定向,常用的有 301、302

          .

          • 4××類狀態(tài)碼表示客戶端錯誤,常用的有 400、403、404

           

          • 5××類狀態(tài)碼表示服務(wù)器錯誤,常用的有 500、502、503

           

           

          到這里,http響應(yīng)狀態(tài)碼就說到這里了。好了,我們下期再見~~~


           


          分割線




          往期推薦


          http長連接和短連接機制

          揭開http報文的神秘面紗

          http到底有什么魔性,備受青睞

          elasticsearch 增刪改查底層原理

          elasticsearch入門篇

          你真的知道怎么實現(xiàn)一個延遲隊列嗎?

          go語言十分鐘入門教程


           

          文章也會持續(xù)更新,可以微信搜索「 邁莫coding 」第一時間閱讀。每天分享優(yōu)質(zhì)文章、大廠經(jīng)驗、大廠面經(jīng),助力面試,是每個程序員值得關(guān)注的平臺。



          1. 你點的每個贊,我都認真當成了喜歡



          瀏覽 27
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产精品秘 久久久久久 | 欧美成人午夜精品 | 天天舔天天插天天干 | 日日夜日日操 | 国产精品美女毛片真酒店 |