前端http協議知識點
阿新 • • 發佈:2018-12-08
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版本協議
- 管線化不會影響響應到來的順序