Http協議響應的解析

        在接受到一個請求後,服務器會返回一個HTTP響應。HTTP響應由三部分構成,即狀態行,相應報頭和響應正文。

        1、狀態行

        狀態行由HTTP版本(HTTP-Version)、狀態碼(Status-Code)以及解釋狀態碼的簡單短語(Reason-phrase)三部分構成,請格式如下:

        HTTP-Version Status-Code Reason-phrase CRLF

        狀態碼由三位數字組成,共有5大類33種,其中第一個數字指定了響應類型,取值爲1~5,後面兩位沒有具體的規定。

  • 1xx:指示信息,如請求收到了或正在處理。
  • 2xx:成功。
  • 3xx:重定向。
  • 4xx:客戶端錯誤,如請求中含有錯誤的語法或不能正常完成。
  • 5xx:服務器端錯誤,如服務器失效而無法完成請求。

        例如:

  • 200:OK  成功
  • 304:Not Modified  未修改
  • 400:Bad Request  錯誤請求
  • 404:Not Found  未找到

        典型的響應狀態碼解釋如下:

  • 200:表示請求成功,成功返回了請求的資源。
  • 302/307:表示臨時重定向,此時請求的文檔已經臨時移動到其他位置,該文檔新的URL將在Location響應報頭中給出。
  • 401:表示瀏覽器訪問的是一個受到密碼保護的頁面。
  • 403:表示服務器收到請求,但拒絕提供服務。
  • 404:表示找不到資源,即服務器上不存在瀏覽器請求的資源。
  • 500:表示內部服務器錯誤,即服務器端的CGI、ASP、JSP等程序發生了錯誤。
  • 503:表示服務器暫時性超載,不能處理當前的請求。

        狀態行舉例:

        HTTP 1.0 200 OK

        這是Web服務器應答的第一行,列出服務器正在運行的HTTP版本號和應答代碼。代碼''200 OK''表示請求完成。

        2、響應報頭

        有了響應報頭服務器就可以傳遞不能放在狀態行中的附加響應信息,以及服務器的信息和對Request-URI所標識的資源進行下一步訪問信息。

        常見的響應報頭如下:

  • Allow:指出服務器所支持的請求方法,如GET、POST等方法。
  • Content-Encoding:指定文檔的編碼方法。
  • Content-Length:指定響應中數據的字節長度。
  • Content-Type:指定回送數據的MIME類型。
  • Date:指定發送HTTP消息的日期。
  • Last-Modified:指定返回數據的最後修改時間。
  • Location:重定向請求到一個新的URI地址。
  • Refresh:指定瀏覽器定時刷新時間。
  • Expires:指定瀏覽器緩存數據的時間。
  • Server:指定服務器名稱,包含了處理請求的服務器使用的軟件產品信息,與User-Agent請求報頭相對應。

        3、響應正文

        響應正文是指服務器所返回的資源內容,如HTML頁面。響應報頭和響應正文之間必須使用空格分隔。

        一個典型的HTTP響應示例如下:

       

    HTTP/1.1 200 OK                          /*狀態行*/
    Connection:close                        /*連接狀態*/
    Date:Wed, 19 Nov 2017 02:20:45 GMT     /*日期*/
    Server:Apache/2.0.54(Unix)              /*服務器*/
    Content-Length:397                      /*指定數據包含的字節長度*/
    Content-Type:text/html                  /*指定返回數據的MIME類型*/
    /*空行*/
    <html>
        <body>
        /*數據*/
        </body>
    </html>


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章