解析HTTP響應(yīng)報文

解析HTTP響應(yīng)報文

1. HTTP 響應(yīng)報文組成

  • HTTP響應(yīng)是由四部分組成:狀態(tài)行、消息報頭、空行、響應(yīng)正文

    HTTP響應(yīng)格式.png
  • HTTP響應(yīng)實例

    HTTP/1.1 200 OK
    Server: Tengine
    Connection: keep-alive
    Date: Wed, 30 Nov 2016 07:58:21 GMT
    Cache-Control: no-cache
    Content-Type: text/html;charset=UTF-8
    Keep-Alive: timeout=20
    Vary: Accept-Encoding
    Pragma: no-cache
    X-NWS-LOG-UUID: bd27210a-24e5-4740-8f6c-25dbafa9c395
    Content-Length: 180945
    ?
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ....
    

2. 狀態(tài)行解析

  • 狀態(tài)行

    說明:狀態(tài)行是由 3 部分組成 ,版本協(xié)議、狀態(tài)碼、狀態(tài)碼描述,之間有空格分割

    HTTP/1.1 200 OK

    1. 狀態(tài)碼解釋

      狀態(tài)碼 解釋用途
      100-199 表示 服務(wù)器成功接受部分請求,要求客戶端繼續(xù)提交余下請求才能完成整個處理過程
      200-299 表示 服務(wù)器成功接受請求并處理完成。(常用 200 ok)
      301 表示 永久重定向,搜索引擎將刪除源地址,保存重定向地址
      302 表示 暫時重定向,重定向地址由響應(yīng)頭中的Location屬性指定 (JSP中Forward和Redirect之間的區(qū)別) 由于搜索引擎的判定問題,較為復(fù)雜的URL容易被其它網(wǎng)站使用更為精簡的URL及302重定向劫持
      304 表示 緩存文件未過期,可以繼續(xù)使用,無需再次請求服務(wù)器獲取數(shù)據(jù)
      400 表示 客戶端請求有語法錯誤,不能被服務(wù)器識別
      403 表示 服務(wù)器成功接受客戶端請求,但拒絕提供服務(wù)(認(rèn)證失?。?/td>
      404 表示 請求數(shù)據(jù)服務(wù)器無法提供(服務(wù)器找不到)
      500-599 表示 服務(wù)器端出現(xiàn)錯誤(客戶端不知道,也不敢問)

3. 消息包頭解析

  • 消息報頭

    1. Server

      說明:Server: Tengine

      • 服務(wù)器名稱和對應(yīng)的版本。
    2. Cnnection

      說明:Connection: keep-alive

      • 作為回應(yīng)客戶端HTTP請求的 Connection:keep-alive ,通知客戶端服務(wù)器的 tcp 連接也是一個長連接,客戶端可以繼續(xù)使用這個tcp連接發(fā)送HTTP請求。
    3. Date

      說明:Date: Wed, 30 Nov 2016 07:58:21 GMT

      • 服務(wù)器發(fā)送資源時的服務(wù)器時間(GMT是格林尼治所在地的標(biāo)準(zhǔn)時間)。HTTP請求中發(fā)送的時間都是GMT,主要是解決在互聯(lián)網(wǎng)上,不同時區(qū)在相互請求資源的時候,時間混亂問題。
    4. Cache-Control(重要技術(shù))

      說明:緩存的方式;強制緩存、對比緩存。數(shù)據(jù)緩存示意圖 緩存示意圖

      Cache-Control: no-cache

      參考地址

      參考地址 (建議讀一下,想了解瀏覽器緩存的)

      • 瀏覽器緩存解析

        1. Cache-Control參數(shù)

          參數(shù) 作用
          private 默認(rèn)值private,僅客戶端可以緩存
          public 客戶端、代理服務(wù)器都可以緩存
          no-cache 使用對比緩存驗證緩存數(shù)據(jù)是否可用
          max-age max-age=XXX,緩存的數(shù)據(jù)將保存XXX秒
          no-stroe 所有數(shù)據(jù)都不緩存
        2. 對比緩存:需要用來驗證緩存數(shù)據(jù)是否可用的標(biāo)識(基于數(shù)據(jù)已緩存)

          • 請求數(shù)據(jù)時,發(fā)送屬性為 If-Modified-Since 獲取數(shù)據(jù)的時間

            If-Modified-Since: Tue, 27 Jun 2017 11:09:34 GMT

            Last-Modified: Tue, 27 Jun 2017 11:09:35 GMT

          • 服務(wù)器響應(yīng)響應(yīng)請求時,發(fā)送屬性為 Last-Modified 最后修改的時間

            Last-Modified: Tue, 27 Jun 2017 11:09:35 GMT

          • If-modifief-Snice 和 Last-Modified 的值大小

          • Etag 和 If-None-Match(優(yōu)先級高于Last-Modified 和 If-Modified-Since)

            Etag:服務(wù)器響應(yīng)請求時,告訴客戶端當(dāng)前資源再服務(wù)器的唯一標(biāo)識

            Etag: "ABfYctUWoo6IcnFWDuXnoFDYRhTh"

            If-None-Match:再次請求服務(wù)器時,服務(wù)器收到帶有 If-None-Match 屬性的請求后,與被請求資源的唯一標(biāo)識進行比對,不同,說明資源又被改動過,則響應(yīng)整片資源內(nèi)容,返回狀態(tài)碼 200;相同,說明資源無修改,則響應(yīng) HTTP 304,告知瀏覽器繼續(xù)使用所保存的cache。

    5. Content-Type

      說明:Content-Type: text/html;charset=UTF-8

      • 通知客戶端,響應(yīng)資源文件的類型、字符編碼,客戶端通過規(guī)定解碼方式對資源進行解碼,然后對資源進行html解析。通常有些網(wǎng)站是亂碼,往往就是服務(wù)器端沒有返回正確的編碼。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容