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