get和post的联系与区别
get和post是什么?HTTP協議中的兩種發送請求的方法。
那么他們有什么區別呢?
在web開發時,我們可以很直觀的看到他們的區別:
1.get將參數放入URL中,而post則通過request body傳遞參數
2.get比post更不安全,因為參數直接暴露在URL上,所以不能用來傳遞敏感信息。
3.get請求參數會被完整保留在瀏覽器歷史記錄里,而post中的參數不會被保留。
4.get請求在URL中傳送的參數是有長度限制的,而post沒有。
?
其實他們在本質上并沒有什么區別,接下來我們來講講原因:
開始的時候我們說過,GET和POST是HTTP協議中的兩種發送請求的方法。
而HTTP基于TCP/IP的關于數據如何在萬維網中如何通信的協議。
HTTP的底層是TCP/IP。所以GET和POST的底層也是TCP/IP,也就是說,GET/POST都是TCP鏈接。
所以如果給get加上request body,給post加上url參數,是可行的。
接下來舉一個例子:
tcp就好比是交通工具--汽車,用來運送東西,但是如此多的汽車十分混亂,那我們需要進行分類,制定了分類規則:交通規則HTTP,我們的分類有:小汽車,公交車,貨車等等。
我們把get貼在汽車身上,然后把參數放在小汽車的頭頂(因為get請求參數是可見的),然后把post請求貼在貨車身上,把參數放在貨車車廂內(因為不可見)。但是這是一個準則,如果你違背準則,把貨車車廂內的參數放一些在貨車車頂,雖然看起來很奇怪,但也是可以的。
所以get和post本質上就是TCP鏈接,并無差別。但是由于HTTP的規定和瀏覽器/服務器的限制,導致他們在應用過程中體現出一些不同。
?
get和post還有一個很大的區別:get產生一個TCP數據包;post產生兩個TCP數據包。
對于get方式的請求,瀏覽器會把 http header和參數一起傳出去,只傳一次。
對應post方式的請求,瀏覽器會傳兩次,第一次傳http header,第二次再傳遞參數
就好比是先傳http header告訴對方我要傳數據了,然后再傳遞參數。
因此可以看出來,get的性能高一些,但是同樣的,在網絡不好的情況下,post更可靠,可以驗證數據包完整性
?
參考自:https://blog.csdn.net/ever_siyan/article/details/87935455
總結
以上是生活随笔為你收集整理的get和post的联系与区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: statement的增删改查和动态的增删
- 下一篇: 【剑指offer】面试题52:两个链表的