1. 程式人生 > 其它 >get和post一般的區別

get和post一般的區別

get和post一般的區別:

  1.post更安全(不會作為url的一部分,不會被快取、儲存在伺服器日誌、以及瀏覽器瀏覽記錄中)

  2.post傳送的資料量更大(get有url長度限制)

  3.post能傳送更多的資料型別(get只能傳送ASCII字元)

  4.post比get慢

5.Post是向伺服器提交資料的一種請求,get是向伺服器發索取資料的一種請求。

6.get會將資料快取起來,而post不會


  但是,get比post更快


post請求包含更多的請求頭
post在真正接受資料之前會先將請求頭髮送給伺服器進行確認,然後才真正傳送資料

  post請求的過程:

  1.瀏覽器請求tcp連線(第一次握手)

  2.伺服器答應進行tcp連線(第二次握手)

  3.瀏覽器確認,併發送post請求頭(第三次握手,這個報文比較小,所以http會在此時進行第一次資料傳送)

  4.伺服器返回100 continue響應

  5.瀏覽器開始傳送資料

  6.伺服器返回200 ok響應

  get請求的過程

  1.瀏覽器請求tcp連線(第一次握手)

  2.伺服器答應進行tcp連線(第二次握手)

  3.瀏覽器確認,併發送get請求頭和資料(第三次握手,這個報文比較小,所以http會在此時進行第一次資料傳送)

  4.伺服器返回200 ok響應。


那麼 GET 相對 POST 的優勢是什麼
GET 的URL可以人手輸,本質上面, GET 的所有資訊都在URL, 所以很方便的記錄下來重複使用。 如果你期望你複製的url資源可以更好的分享給別人看,就用GET方法吧POST方法做不到
從深層次上分析:
雖然這兩者都是明文傳送。但它們表達的語義不一樣,這決定了主幹網路可以對其做不同的處理。
get表達的是一種冪等的,只讀的,純粹的操作,即它除了返回結果不應該會產生其它副作用(如寫資料庫),因此絕大部分get請求(通常超過90%)都直接被CDN快取了,這能大大減少web伺服器的負擔。

而post所表達的語義是非冪等的,有副作用的操作,所以必須交由web伺服器處理。

把所有get請求換成post,意味著主幹網路上的所有CDN都廢掉了,web伺服器要處理的請求數量將成百上千倍地增加