區別:1、post請求更安全;post請求不會作為url的一部分,不會被快取、保存在伺服器日誌、以及瀏覽器瀏覽記錄中,get請求的是靜態資源,則會緩存,如果是數據,則不會緩存。 2.post請求發送的資料較大,get請求有url長度限制。 3.post請求能發送更多的資料類型,get請求只能發送ASCII字元。 4.傳參方式不同。 5.get產生一個TCP資料包;post產生兩個。
本教學操作環境:windows10系統、Dell G3電腦。
get請求:從指定的資源請求數據,用於獲取數據,一般用於搜尋排序和篩選之類的操作。
post請求:向指定的資源提交要被處理的數據,用於將資料傳送給伺服器,一般用於修改和寫入資料。
get請求和post請求本質上就是TCP鏈接,並無差別。但是由於HTTP的規定和瀏覽器/伺服器的限制,導致他們在應用過程中體現出一些不同。
post請求和get請求的區別
(1)post請求更安全(不會作為url的一部分,不會被緩存、保存在伺服器日誌、以及瀏覽器瀏覽記錄中,get請求的是靜態資源,則會緩存,如果是數據,則不會緩存)
(2)post請求發送的數據更大( get請求有url長度限制,http協定本身不限制,請求長度限制是由瀏覽器和web伺服器決定和設定)
(3)post請求能發送更多的資料型別(get請求只能發送ASCII字元)
(4)傳參方式不同(get請求參數透過url傳遞,post請求放在request body中傳遞)
(5)get請求產生一個TCP封包;post請求產生兩個TCP封包(get請求,瀏覽器會把http header和data一併發送出去,伺服器回應200回傳資料;post請求,瀏覽器先發送header,伺服器回應100 continue,瀏覽器再傳送data,伺服器回應200 回傳資料)
注意:在發送POST 的時候都沒有帶Expect 頭,server 也自然不會發100 continue。
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回應
網路環境好的情況下,發送一次封包和發送兩次封包的時間差異基本上可以忽略。而在網路環境差的情況下,兩次封包的TCP在驗證封包完整性上,有非常大的優點。
更多相關知識,請造訪常見問題欄位!
以上是post和get請求的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!