GET與POST的區別

2022-07-19 04:33:15 字數 1578 閱讀 8408

前幾天有個同學問我get與post有什麼區別,在此之前我只知道get與post的區別如下:

1.get請求的資料會附在url之後,post則把提交的資料放置在http包的包體中;

2.get方式提交的資料最多只能是1024個位元組,理論上post沒有限制,可傳較大量的資料;

3.post的安全性要比get高。

1.get是用來從伺服器上獲得資料,而post是用來向伺服器傳遞資料;

2.get將表單中的資料按照variable=value的形式,新增到action所指向的url後面,並且兩者使用「?」連線,而各個變數之間使用「&」連線;post是將表單中的資料放在form的資料體中,按照變數和值相對應的方式,傳遞到action所指向的url;

3.get是不安全的,因為在傳輸過程,資料被放在請求的url中,而如今現有的很多伺服器、**伺服器或者使用者**都會將請求url記錄到日誌檔案中,然後放在某個地方,這樣就可能會有一些隱私的資訊被第三方看到;另外,使用者也可以在瀏覽器上直接看到提交的資料,一些系統內部資訊將會一同顯示在使用者面前;post的所有操作對使用者來說都是不可見的;

4.get傳輸的資料量小,這主要是受url長度的限制;而post可以傳輸大量的資料,所以上傳檔案時只能使用post;

5.get限制form表單的資料集的值必須為ascii字元;而post支援整個iso10646字符集,預設是iso-8859-1編碼;

6.get是form的預設方法。

然而這只是網上最普遍的答案,接下來的觀點否認了以上提到的get與post的區別,具體分析如下:

1.get和post與資料如何傳遞沒有關係

get和post是由http協議定義的。在http協議中,method和dageta(url,body,header)是正交的兩個概念,也就是說,使用哪個method與應用層的資料如何傳輸是沒有相互關係的。

http沒有要求,如果method是post就要將資料放在body中;也沒有要求,如果method是get,資料(引數)就一定要放在url中,而不放在 body中。get方式將資料放在url之後,post方式將資料放在body中只是html標準對於http協議的用法的約定。

2.http協議對get和post都沒有對長度的限制

http協議明確地指出了,http頭和body都沒有長度的要求。而對於url長度上的限制,有兩個方面的原因造成:

1,瀏覽器。據說早期的瀏覽器會對url長度做限制。

2,伺服器。url長了,對伺服器處理也是一種負擔。原本乙個回話就沒有多少資料,現在如果有人惡意的構造幾個幾m大小的url,並不停地訪問伺服器,伺服器的最大併發數顯然會下降。由此多數伺服器出於安全,穩定方面考慮,會給url的長度加限制,但這個限制是針對所有http請求的,與get和post沒有關係。

我個人認為以上的觀點對於get和post的區別分析都有一定的道理,只是他們分析的角度不同,前者是從客戶端與伺服器的角度來分析get與post的區別;而後者是從http協議本身來分析get與post的區別。

Get與Post的區別

1.href與action的區別 href只能get引數,action能get引數又能post引數 href一般用於單個連線,可以帶引數 url重寫 是採用get方式請求的,在位址列中可以看到所有的引數 action一樣用於表單的提交 如 註冊 等,他可以提交大量和比較複雜的引數,可通過post和g...

Get 與Post 的區別

get 與post 的區別 表單提交中get和post方式的區別有5點 1.get是從伺服器上獲取資料,post是向伺服器傳送資料。2.get是把引數資料佇列加到提交表單的action屬性所指的url中,值和表單內各個字段一一對應,在url中可以看到。post是通過http post機制,將表單內各...

get 與 post 的區別

先簡單的介紹一下 get與 post lget 是以實體的方式得到由請求 uri所指定資源的資訊,如果請求 uri只是乙個資料產生過程,那麼最終要在響應實體中返回的是處理過程的結果所指向的資源,而不是處理過程的描述。l post 用來向目的伺服器發出請求,要求它接受被附在請求後的實體,並把它當作請求...