html get请求_99% 的人都理解错了 HTTP 中 GET 与 POST 的区别【面试必问】
先分析一波:
1、GET和POST與數(shù)據(jù)如何傳遞沒有關(guān)系??
GET和POST是由HTTP協(xié)議定義的。那么使用哪個方式與應用層的數(shù)據(jù)如何傳輸是沒有相互關(guān)系的。從而,HTTP就沒有要求,POST一定要放到請求體里面,GET就一定要放到URL里面。
在HTML標準中,是有著類似的定義。但這只是HTML標準對HTTP協(xié)議的用法的約定。也就是規(guī)范上說,無區(qū)別。
那么,這個說法是從何而來的呢?是因為有各種瀏覽器等軟件的實現(xiàn),就變成了我們現(xiàn)在熟知的現(xiàn)象,GET要用URL傳參,POST用body傳參。
2、HTTP協(xié)議對GET和POST有沒有對長度的限制??
HTTP協(xié)議明確地指出了,HTTP請求頭和請求體都沒有長度的要求。
而對于URL長度上的限制,有兩方面的原因造成:
1、瀏覽器。
據(jù)說IE對URL長度會限制在2048個字符內(nèi)。但是就我所知,firefox是支持10W以上的長度。
2、服務器。
服務器處理超長的URL本身就是一種負擔,更何況遭受惡意攻擊呢?
因此,多數(shù)服務器出于安全、穩(wěn)定等多方面的考慮,會給URL長度加限制。但是這個限制是針對所有HTTP請求的,與GET、POST沒有關(guān)系。
3安全不安全和GET、POST有沒有關(guān)系??
這個問題,首先你得確認面向?qū)ο蟆?/p>
舉個例子:
1、你現(xiàn)在要讓我爸爸媽媽去看看這個URL,你覺得安全嗎?
2、你現(xiàn)在要讓一個剛?cè)腴T的初級功能測試工程師去測試這個鏈接,你覺得安全嗎?
3、你現(xiàn)在要讓安全測試工程師去看看get請求,你覺得安全嗎?
所以,針對不同的人群,安全的定義就會不一樣。
“如果你愿意一層一層一層的剝開我的心 ,你會發(fā)現(xiàn)你會訝異 ,你是我最壓抑 ,最深處的秘密 ”
把Get和Post剝開后,他們的本質(zhì)上就是TCP鏈接,并無差別。
只是由于HTTP的規(guī)定和瀏覽器/服務器的限制,導致他們在應用過程中體現(xiàn)出一些不同。
那么真相到底是什么呢?
Get產(chǎn)生一個TCP數(shù)據(jù)包;Post產(chǎn)生兩個TCP數(shù)據(jù)包。
對于GET方式的請求,瀏覽器會把http header和data一并發(fā)送出去,服務器響應200(返回數(shù)據(jù));
對于POST,瀏覽器先發(fā)送header,服務器響應100(continue),然后再發(fā)送data,服務器響應200(返回數(shù)據(jù));
總結(jié)
以上是生活随笔為你收集整理的html get请求_99% 的人都理解错了 HTTP 中 GET 与 POST 的区别【面试必问】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mnist数据集svm python_p
- 下一篇: 卡扇区数据教程_分享一款硬盘分区和数据恢