1. 程式人生 > >HTTP協議相關基礎知識點

HTTP協議相關基礎知識點

@1 簡介:
  HTTP是全球資訊網的應用層通訊協議,web頁面的所有資料都是通過這個文字協議進行傳輸、HTTP是一種無狀態、由文字構成的請求響應(request-response)協議,這種協議使用的是客戶端-伺服器(client-server)計算模式
@2 版本:
  HTTP 0.9 HTTP1.1 HTTP2.0 HTTP1.1是目前使用最為廣泛的一個版本,最新的版本是HTTP2.0 HTTP/2
@3 HTTP請求
  HTTP是一種請求-響應協議,協議涉及的所有事情醫一個請求開始。HTTP請求由以下幾部分組成:

  1>:請求行(request-line);
  2>:零個或任意多個請求首部(header);
  3>:一個空行;
  4>:可選的報文主體(body)

  來看一個簡單的HTTP請求:

 請求方法      統一資源識別符號(URI)
  |                     |
  |                     |
  GET /Protocols/test/test.html HTTP/1.1    --HTTP 版本
  Host: www.test.com
  User-Agent: Mozilla/8.0
  (empty line)
@3.1 請求方法
    請求方法是請求行中的第一個單詞,它指明瞭客戶端想要對資源執行的操作,在HTTP0.9中只有GET一個方法,HTTP1.0中添加了POST和HEAD方法,在HTTP1.1中添加了PUT,DELETE,OPTIONS,TRACE,CONNECT,並允許開發者自行新增更多方法。

    各個HTTP方法:

    1> GET          -----       命令伺服器返回指定的資源
    2> HEAD         -----       與GET類似,唯一不同的是此方法不要求伺服器返回報文的主體,通常用於在不獲取報文主體的情況下取得響應的首部。
    3> POST         -----       命令伺服器將報文主體中的資料傳遞給URI指定的資源,伺服器對資料執行的動作取決於伺服器本身。
    4> PUT          -----       命令伺服器將報文主體中的資料設定為URI指定的資源。若指定位置已經存在,則覆蓋,若無,則新建。
    5> DELETE       -----       命令伺服器刪除URI指定的資源。
    6> TRACE        -----       命令伺服器返回請求本身。通過這個方法可以知道介於它和伺服器之間的其他伺服器是如何處理請求的。
    7> CONNECT      -----       命令伺服器與客戶端建立一個網路連線,通常用於設定SSL隧道以開啟HTTPS功能。
    8> OPTIONS      -----       命令伺服器返回它支援的HTTP方法列表
    9> PATCH        -----       命令伺服器使用報文主體中的資料對URI指定的資源進行修改。
@3.2 請求首部
    HTTP請求方法定義額傳送請求的客戶端想要執行的動作,HTTP首部記錄了與請求本身一級客戶端有關的資訊。請求首部由任意多個冒號分割的純文字鍵值對組成,最後一回車(CR)和換行(LF)結尾。
    大多數的HTTP請求首部都是可選的,宿主(Host)首部欄位是HTTP1.1唯一強制要求的首部。根據請求使用的方法不同,如果請求的報文中包含有可選的主體,那麼請求的首部還需要帶有內容長度(Content-Length)欄位或傳輸編碼(Transfer-Encoding)欄位。
    常用的請求首部:
    1> Accept       ----        客戶端在HTTP響應中能夠接受的內容型別。比如:客戶端可以通過Accept:tex/html這個首部告知伺服器自己希望在響應的主體中收到HTML型別的內容。
    2> Accept-Charset       ----        客戶端要求伺服器使用的字元編碼。比如:Accept-Charset:utf-8
    3> Authorization        ----        用於向伺服器傳送基本的身份驗證證書。
    4> Cookie               ----        客戶端在這個首部中把伺服器之前設定的所有cookie回傳給伺服器。比如:Cookie:first_cookie=hello;second_cookie=workd;
    5> Content-Length       ----        請求主體的位元組長度。
    6> Content-Type         ----        當請求包含主體的時候,這個首部用於記錄主體內容的型別。在傳送POST或PUT時,內容的型別預設為x-www-form-urlen-coded,在上傳檔案時,內容的型別應當設定為multipart/form-data。
    7> Host                 ----        伺服器的名字及埠號。埠號預設80
    8> Referrer             ----        發起請求的頁面所在的地址
    9> User-Agent           ----        對發起請求的客戶端進行描述
@4 HTTP響應
  HTTP響應報文是對HTTP請求報文的回覆。HTTP響應也是由一部分文字行組成:
  1>        ----        一個狀態行
  2>        ----        零個或任意數量的響應首部
  3>        ----        一個空行
  4>        ----        一個可選的報文主體

  一個響應報文:
  200  OK           --------------- 狀態行
  Data: Sat,22 Nov 2018 17:58:58 GMT
  Server: Apache/2
  Last-Modified: Thu,28 Aug 2018 21:01:33 GMT
  Content-Length:33225
  Content-Type: text/html:charset=utf8
  <!DOCYPE>         -------------- 報文主體
  <html>
  <title>Hello</title>
  </html>