GET與POST區別

?報文上

  • GET 和 POST 只是 HTTP 協議中兩種請求方式(異曲同工),而 HTTP 協議是基於 TCP/IP 的應用層協議,無論GET還是 POST,用的都是同一個傳輸層協議,所以在傳輸上,沒有區別。
  • 報文格式上,不帶參數時,最大區別就是第一行方法名不同,
    僅僅是報文的幾個字符不同。而帶參數時,get請求參數放在url中,post請求放在body中。

?格式上

  • GET請求:http://localhost:2454/RequestMethod/AddInfo.ashx?txtName=itcast&txtPwd=123,參數寫在?後面,參數與參數用&分割
  • POST請求:http://localhost:2454/RequestMethod/AddInfo.ashx

?長度限制上

  • 發送數據時,get方法向URL添加數據的長度是受限制的,最大長度爲2048個字符。get只允許ASCII字符。
  • post方法由於參數是在body中,所以在長度上是沒有限制的,也允許是二進制數據。

?安全上

  • 與Post相比,get請求安全性較差,因爲發送的數據是URL中的一部分,也可以被緩存,也可以在瀏覽器歷史上查看。可見上來說,數據在URL中所有人都是可見的。
  • Post請求相對來說較安全,參數不會被保存在瀏覽器歷史或web服務器日誌中。
  • 而從傳輸的角度來看,兩種方式都是不安全的,HTTP協議是明文傳輸的,只要在網絡節點上抓包,就能完整的獲取數據報文。想安全傳輸,只能加密,使用HTTPS協議。

?接收數據

  • string userName=context.Request.QueryString[“txtName”]; //get請求方式接收數據
  • string userPwd=context.Request.Form[“txtPwd”]; //post請求方式接收數據

?情景

使用GET請求的情景:

  • 當查詢信息時,信息只用來搜索,如搜索框。
  • 單擊超鏈接
  • 在瀏覽器中輸入地址,回車,使用的是get請求
  • 請求結果無持續性的副作用

使用POST請求的情景:

  • 信息長度在2048字符以上
  • 傳送的數據不是ASCII
  • 請求的動作有持續性的副作用,如向數據庫表中添加數據行
以上是本人的一點見解,如有更全面的理解請下方評論或其他方式與我交流。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章