1. 程式人生 > >前端http協議知識點

前端http協議知識點

1.特點

  • 簡單快速:每個uri 是固定的
  • 靈活:通過一個http型別,可以完成不同資料型別的傳遞
  • 無連線:連線一次會斷掉,不會保持連線
  • 無狀態:沒有記錄狀態,無法區分兩次連線的身份

2.http報文的組成部分

  • 請求報文:

    • 請求行:http方法,頁面地址,http協議 版本
    • 請求頭:key value
    • 空行:
    • 請求體:資料部分
    • 響應報文
  • 狀態行
  • 響應頭
  • 空行
  • 響應體

3.http方法

  • get:獲取資源
  • post:傳輸資源
  • put:更新資源
  • delete:刪除資源
  • head:獲得報文頭部

4.post 和get 區別

  • get在瀏覽器回退的時候是無害的,而post會再次提交請求
  • get產生的url地址可以被收藏,post不可以
  • get請求會被瀏覽器主動快取,post不可以,除非手動設定
  • get只能進行url編碼,而post支援多種編碼方式
  • get 請求引數可以被完整儲存在瀏覽器歷史記錄裡,post引數不可以
  • get請求在url中傳送的引數是有長度限制的,post沒有限制
  • 引數的資料型別,get只接受ASCII字元,post沒有限制
  • get比post更不安全,因為引數暴露在url上
  • get 引數通過url傳遞,post 放在request body中

5.http狀態碼

  • 1XX:指示資訊-表示請求已經被接受,基礎處理
    • 2XX:成功,表示請求已被成功接收
    • 3XX:重定向 - 要完成請求必須進行
  • 4XX:客戶端錯誤-請求有語法錯誤,或者請求無法實現
    • 5XX:伺服器錯誤-伺服器未能實現合法的請求

6.什麼是持久連線(1.1版本支援)

  • http協議採用’請求-應答’模式,當使用普通模式,即非Keep-live模式,每個請求/應答客戶端都要建立一個新的連線,完成之後立即斷開
  • 當使用keep-live模式,使客戶端和服務端的連線持續有效,當出現對伺服器的後繼請求時,keep-live功能避免的了建立或者重新建立新的連線

7.什麼是管線化(1.1版本支援)

  • 正常:在使用持久連線的情況下,某個連線上訊息的傳遞類似與 請求1->響應1->請求2->響應2…..
  • 管線化:請求打包一起傳送 請求1->請求2->請求3->響應1->響應2->響應3
    • 只有get和head請求可以管線化,post有所限制
    • 初次建立連線不應啟動管線機制,因為對方伺服器不一定支援http/1.1版本協議
    • 管線化不會影響響應到來的順序