2 回答

TA貢獻(xiàn)2051條經(jīng)驗 獲得超10個贊
GET:用于獲取數(shù)據(jù)。
POST:用于修改數(shù)據(jù)。
一.GET和POST與數(shù)據(jù)如何傳遞沒有關(guān)系
GET和POST是由HTTP協(xié)議定義的。在HTTP協(xié)議中,Method和Data(URL, Body, Header)是正交的兩個概念,也就是說,使用哪個Method與應(yīng)用層的數(shù)據(jù)如何傳輸是沒有相互關(guān)系的。
二.HTTP協(xié)議對GET和POST都沒有對長度的限制
HTTP協(xié)議明確地指出:HTTP頭和Body都沒有長度的要求。而對于URL長度上的限制,有兩方面的原因造成:
1. 瀏覽器。據(jù)說早期的瀏覽器會對URL長度做限制。據(jù)說IE對URL長度會限制在2048個字符內(nèi)(流傳很廣,而且無數(shù)同事都表示認(rèn)同)。但我自己試了一下,我構(gòu)造了90K的URL通過IE9訪問live.com,是正常的。網(wǎng)上的東西,哪怕是Wikipedia上的,也不能信。
2. 服務(wù)器。URL長了對服務(wù)器處理也是一種負(fù)擔(dān)。原本一個會話就沒有多少數(shù)據(jù),現(xiàn)在如果有人惡意地構(gòu)造幾個幾M大小的URL,并不停地訪問你的服務(wù)器。服務(wù)器的最大并發(fā)數(shù)顯然會下降。另一種攻擊方式是,把告訴服務(wù)器Content-Length是一個很大的數(shù),然后只給服務(wù)器發(fā)一點(diǎn)兒數(shù)據(jù),哪怕你有超時設(shè)置,這種故意的次次訪問超時也能讓服務(wù)器吃不了兜著走。有鑒于此,多數(shù)服務(wù)器出于安全穩(wěn)定方面的考慮,會給URL長度加限制。但是這個限制是針對所有HTTP請求的,與GET、POST沒有關(guān)系。
所以對于GET和POST,他們只有一點(diǎn)根本區(qū)別,簡單點(diǎn)兒說:
一個用于獲取數(shù)據(jù)。
一個用于修改數(shù)據(jù)。
添加回答
舉報