1. 程式人生 > >HTTP報文

HTTP報文

提示 報文 發生 reason sta 修改 expires options 響應報文

HTTP 報文是 HTTP 應用程序之間傳遞的格式化數據塊,分為請求報文響應報文兩類,兩者的基本結構相同。

HTTP 報文由起始行首部主體(可選)三個部分組成。其中,起始行和首部均以一個行終止序列(即空行,可寫作CRLF,包括一個回車符、一個換行符)作為結束符。主體是可選的數據塊,可以包含文本、二進制數據或者為空。

起始行

所有 HTTP 報文都已起始行作為開始,請求報文和響應報文的起始行的語法有所不同。

請求報文起始行:

又稱為請求行,告訴服務器要做什麽。

語法:

  <method><request-URL><version> 如:GET www.google.com HTTP/1.0

  方法(method):常用的有

           ① GET:從服務器上獲取資源

           ② POST:向服務器發送需要處理(更新)的數據

           ③ PUT:將請求主體存儲於(寫入)服務器上的指定路徑(請求的 URL)

           ④ DELETE:請求服務器刪除資源,但無法保證被執行,因為服務器可以在不通知客戶端的情況下撤銷請求

           ⑤ HEAD:從服務器獲取資源首部,必須確保與 GET 請求返回的首部完全相同

           ⑥ OPTIONS:確定服務器可以執行的方法;使客戶端不同實際訪問資源就能判斷訪問資源的最優方法。

           ⑦ TRACE:對可能經過代理服務器的報文進行跟蹤

   其中 GET 和 HEAD 方法被認為是安全的,因為這兩種請求不會在服務器上產生什麽結果。

響應報文起始行:

又稱為響應行,告訴客戶端發生了什麽。

語法:

<version><status><reason-phrase> 如:HTTP/1.0 200 OK

  狀態碼(status-code):數字狀態碼,便於程序進行差錯處理;每個狀態碼第一位數字都用於描述狀態的一般類型。其中

      100-199:表示信息提示,100-101 已被定義

           100 Continue 表示服務器收到了請求的初始部分,請客戶端繼續。一般當客戶端需要發送一個大實體或判斷服務器能否處理實體時,可以在首部添加 Expect: 100 Continue。如果客戶端不需要發送實體,就不應該發送該首部字段。

      200-299:表示成功,200-206 已被定義

           200 OK 請求成功,主題包含所請求的資源。

      300-399:表示資源被移走,300-305、307 已被定義

           301 Moved Permanently 永久重定向;

           302 Found 臨時重定向(HTTP/1.0);

           303 See Other 臨時重定向(HTTP/1.1);

           304 Not Modified 所請求資源未被修改,使用緩存資源;

           307 Temporary Rederect 與 301 類似(HTTP/1.1);

      400-499:表示客戶端請求出錯,400-415 已被定義

           401 Unauthorized 客戶端在獲取資源的訪問權之前,對自己進行認證;

           403 Forbidden 請求被服務器拒絕,通常在服務器不想說明拒絕原因時使用;

           404 Not Found 請求的資源不存在;

           405 Method Not Allowed 請求中帶有所請求 URL 不支持的方法;

           406 Not Acceptable 服務器不存在客戶端可接受的與請求 URL 匹配的資源;

      500-599:表示服務器出錯,500-505 已被定義

           500 Internal Server Error 服務器發生錯誤;

           501 Not Implemented 請求超出服務器的能力範圍(如使用服務器不支持的請求方法);

           503 Service Unavalable 服務器暫時無法為請求提供服務,但將來可以;

           504 Gateway Timeout 響應超時,來自網關或代理;

           505 HTTP Version Not Supproted 請求使用了服務器無法或不願支持的協議版本;

  原因短語(reason-phrase):以文本形式描述操作狀態;便於人們理解,因此只對人類有意義(一般程序只檢查狀態碼)

首部

為報文添加一些附件信息;本質上是一些名/值對列表。首部分為:

  通用首部:

    緩存首部:Cache-Control、Pragma

  請求首部:

    Accept首部:Accept、Accept-Charset、Accept-Encoding、Accept-Language、TR

    條件首部:Expect、If-Match、If-Modified-Since、If-Unmodified-Since、If-Match、If-None-Match

    安全首部:Authorization、Cookie、Cookie2

    代理首部:Max-forward、Proxy-Authorization、Proxy-Connection

  響應首部:

    信息性首部:Age、public...

    安全首部:Proxy-Authenticate、Set-Cookie、Set-Cookie2

  實體首部:

    信息性首部:Allow、Location

    內容首部:Content-Type、Content-length、Content-Language

    緩存首部:ETag、Expires、Last-Modified

  擴展首部。

主體

HTTP 要傳輸的內容,可以為圖片、視頻、HTML 文檔、軟件應用程序等。

參考:HTTP 權威指南

HTTP報文