http請求之get和post的區別


http請求之get和post的區別
前言:
大家現在度娘一下,查得最多的區別,可能就是:

“Get把參數寫在URL中,Post通過請求體來傳參的”

“GET沒有POST安全,因為Get參數直接顯示在URL上”

“Get請求在URL中傳送的參數是有長度限制的,而POST是沒有的”

但是,真相是這樣的嗎?!!!真相永遠只有一個!!!

先分析一波:

GET和POST與數據如何傳遞沒有關系??

  GET和POST是由HTTP協議定義的。那么使用哪個方式與應用層的數據如何傳輸是沒有相互關系的。從而,HTTP就沒有要求,POST一定要放到請求體里面,GET就一定要放到URL里面。

  在HTML標准中,是有着類似的定義。但這只是HTML標准對HTTP協議的用法的約定。也就是規范上說,無區別。

  那么,這個說法是從何而來的呢?是因為有各種瀏覽器等軟件的實現,就變成了我們現在熟知的現象,GET要用URL傳參,POST用body傳參。

HTTP協議對GET和POST有沒有對長度的限制??

  HTTP協議明確地指出了,HTTP請求頭和請求體都沒有長度的要求。

  而對於URL長度上的限制,有兩方面的原因造成:

  1. 瀏覽器。據說IE對URL長度會限制在2048個字符內。但是就我所知,firefox是支持10W以上的長度。

  2. 服務器。服務器處理超長的URL本身就是一種負擔,更何況遭受惡意攻擊呢?因此,多數服務器出於安全、穩定等多方面的考慮,會給URL長度加限制。

   但是這個限制是針對所有HTTP請求的,與GET、POST沒有關系。

安全不安全和GET、POST有沒有關系??

  這個問題,首先你得確認面向對象。

  舉個例子:

  1.你現在要讓我爸爸媽媽去看看這個URL,你覺得安全嗎?

  2.你現在要讓一個剛入門的初級功能測試工程師去測試這個鏈接,你覺得安全嗎?

  3.你現在要讓安全測試工程師去看看get請求,你覺得安全嗎?

  所以,針對不同的人群,安全的定義就會不一樣。

“如果你願意一層一層一層的剝開我的心 ,你會發現你會訝異 ,你是我最壓抑 ,最深處的秘密 ”

把Get和Post剝開后,他們的本質上就是TCP鏈接,並無差別。
只是由於HTTP的規定和瀏覽器/服務器的限制,導致他們在應用過程中體現出一些不同。

那么真相到底是什么呢?

Get產生一個TCP數據包;Post產生兩個TCP數據包。 對於GET方式的請求,瀏覽器會把http header和data一並發送出去,服務器響應200(返回數據);

對於POST,瀏覽器先發送header,服務器響應100(continue),然后再發送data,服務器響應200(返回數據);

轉自:https://www.cnblogs.com/zymnstlm/p/9479634.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM