深刻淺出篇 — Get與Post請求區別

一. HTTP協議

  1. http協議分爲兩個部分:
  • 請求 Request
  • 響應 Response
  1. 其中請求方式又分爲 GET 和 POST

請求頭字段中:

  1. 第一行:請求方式 url 協議版本
  2. 實例:
  • get /path?a=1&b=2 http1.1 這裏是不帶域名的url 即http協議源碼格式 (在後面的host裏說明了域名)
  • host(主機):www.baidu.com
  • Connection(鏈接方式):keep-alive 長鏈接
  • user-Agent : 客戶端 用來記錄本身是什麼瀏覽器的

響應頭字段中:

  1. 響應頭第一行:協議版本 狀態碼 message(信息)
  2. 以後也都是屬性和值的字段
  3. 實例:
  • Cache-Control:max-age = 86400 信息緩存保留的時間

二. IP地址

  1. Ip地址的格式
  • Ip地址分爲四個段,每一個段0~255,每一個段都是由8個0、1組成的
  1. Ip地址的分類:
  • 一個Ip地址分爲兩個部分:網絡Id,主機Id
  • A類 0.0.0.0-127.255.255.255 (一個網絡能有1600+萬臺)
  • B類 128.0.0.0~191.255.255.255
  • C類 192.0.0.0~223.255.255.255 (能容納較少)
  • D類 多播地址
  • E類
  1. 在同一個網絡內,IP地址不能重複
  2. 若是你想搭建一個服務器,讓別人可以訪問到,就必須有一個公網Ip

三. GET與Post請求的區別

  1. 要看是基於什麼前提的,若什麼前提都沒有,不使用任何規範,只考慮語法和理論上的http協議,get和post幾乎沒有任何區別,只有名字不同而已
  2. 若是是基於RFC規範的
  • 理論上的(specification) --- get和post是具備相同的語法的,可是有不一樣的語義,get是用來獲取數據的,post是用來發送數據的,其餘方面沒有區別
  • 實現上的(implementation) --- 各類瀏覽器,就是這個規範的實現者
就是由於基於瀏覽器實現上的,因此有了各類不一樣:
1)GET數據在URL上是可見的,post請求不顯示在url上的
2)get請求對長度是有限制的,post長度是無限的
3)get請求的數據能夠收藏爲書籤,post請求到的數據不可收藏爲標籤
4)get請求後,按後退按鈕/刷新按鈕無影響,post數據會被從新提交
5) get編碼類型 : application/x-www-form-url,
    post的編碼類型:有不少種encodeapplication/x-www-form-urlencoded  或 multipart/form-data
6) get歷史參數會被保留在瀏覽器裏,post不會保存在瀏覽器中
7)get只容許ASCII  post沒有編碼限制,容許發二進制的
8)get與post相比,get的安全性較差,由於所發的數據是URL的一部分
複製代碼
相關文章
相關標籤/搜索