Get和Post的區別以及注意點

概念

GET和POST是什麼?

HTTP協議中的兩種發送請求的方法。

HTTP是什麼?

HTTP是基於TCP/IP的關於數據如何在萬維網中如何通信的協議。

HTTP的底層是TCP/IP。所以GET和POST的底層也是TCP/IP,都是TCP鏈接。GET和POST能做的事情是一樣一樣的。如果給GET加上request body,活着給POST帶上url參數,技術上是完全行的通的。

區別

1.Get是不安全的,因爲在傳輸過程,數據被放在請求的URL中;Post的所有操作對用戶來說都是不可見的,通過request body傳遞參數。

2.Get傳送的數據量較小,這主要是因爲受URL長度限制;Post傳送的數據量較大,一般被默認爲不受限制。

3.Get限制Form表單的數據集的值必須爲ASCII字符;而Post支持整個ISO10646字符集。

4.Get執行效率卻比Post方法好。Get是form提交的默認方法。

5.GET產生一個TCP數據包;POST產生兩個TCP數據包。

6.對於GET方式的請求,瀏覽器會把http header和data一併發送出去,服務器響應200(返回數據);

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

7.GET請求參數會被完整保留在瀏覽器歷史記錄裏,而POST中的參數不會被保留。

8.GET請求只能進行url編碼,而POST支持多種編碼方式。

9.GET請求會被瀏覽器主動cache,而POST不會,除非手動設置。

注意

1.在網絡環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。

2.在網絡環境差的情況下,兩次包的TCP在驗證數據包完整性上,有很好的體驗效果

3.並不是所有瀏覽器都會在POST中發送兩次包,Firefox就只發送一次。

如果大家對java架構相關感興趣,可以關注下面公衆號,會持續更新java基礎面試題, netty, spring boot,spring cloud等系列文章,一系列乾貨隨時送達, 超神之路從此展開, BTAJ不再是夢想!

架構殿堂

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章