HTTP協議 詳解

前言

  掌握HTTP協議是每一個開發者的基礎,超詳細的HTTP協議筆記

正文

  

HTTP協議格式總覽

HTTP line

HTTP Method(方法)

  介紹了我們請求希望執行的操作類型。

  方法有:

  1. GET : 通過地址欄攜帶信息訪問頁面
  2. POST:表單提交的形式,請求內容放在body中
  3. HEAD:和get類似,只返回請求頭,多數由javaScript發起
  4. PUT:語義上的一種約定:表示添加資源
  5. DELETE:語義上的一種約定:表示刪除資源
  6. CONNECT:多用於HTTPS和WebSocket
  7. OPTIONS: 調試使用
  8. TRACE:調試使用

HTTP Status code(狀態碼)和Status text(狀態文本)

  • 1XX:臨時迴應,表示客戶端請繼續。
  • 2xx:請求成功
    • 200:請求成功
  • 3xx:表示請求的目標有變化嗎,希望客戶端進一步處理。
    • 301&302永久性與臨時性的跳轉,表示當前資源已被轉移,只不過一個是永久性轉移,一個是臨時性的,301更接近一種報錯,提示客戶端下次別來了。
    • 304:跟客戶端緩存沒有更新:產生前提是客戶端本地已經有緩存的版本,並且在request中告訴了服務端,當服務端通過時間或tag,發現沒有更新的時候了,就會返回一個不含body的304狀態
  • 4xx:客戶端錯誤
    • 403:無權限
    • 404:表示請求的頁面不存在
    • 418:這是一個彩蛋
  • 5xx:服務端請求錯誤
    • 500:服務端錯誤
    • 503服務端暫時性錯誤,可以一會再試

HTTP Head(HTTP頭)

  它可以被看做鍵值對,只是有些特殊。

Request Header

Response Header

 

HTTP Request Body

  HTTP 請求的Body主要用於表單場景。

  body中的格式可以是任何類型的數據,但是爲了得到服務端的認可,也有一些常見的格式

  如:json,form-data,xml

  值得注意的是,當有文件上傳時,則使用multipart/form-data

 

HTTP2

  http2.0是http1.1的升級版,

  HTTP2.0的改進:

    1  支持服務端推送

  服務端推送能夠在客戶端發生第一個請求時,提前把一部分內容推送給客戶端,放入緩存中,

  避免客戶端請求順序帶來的並行度不高,從而導致的性能問題

    2  支持TCP連接複用

  使用同一個TCP連接來傳輸多個HTTP請求,避免了 TCP連接建立時的,三次握手開銷和初建TCP連接時窗口小的問題

    3  使用二進制代理文本進行傳輸

    極大提高了傳輸的效率

 HTTPS

  HTTPS的兩個作用

    1  確定請求的目標服務端身份

    2  保證傳輸的數據不會被網絡中間節點竊聽和篡改

  HTTPS通過加密通道來傳輸HTTP內容

  HTTPS首先與服務端建立一條TLS加密通道,TSL構建在TCP協議之上,它實際是對傳輸的內容做一次加密,所以從傳輸的內容來看,HTTPS和HTTP是一樣的。

結尾

  HTTP協議是每個工程師的基礎。

  希望大家都能理解透徹。

 

以上內容爲個人的學習筆記,僅作爲學習交流之用。

 

歡迎大家關注公衆號,不定時乾貨,只做有價值的輸出

作者:Dawnzhang 
出處:https://www.cnblogs.com/clwydjgs/

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