GET和POST的區別

2021-07-25 18:55:23 字數 2428 閱讀 8655

原理性上的區別

http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get、post、put、delete。url全稱是資源描述符,我們可以這麼認為:乙個url位址,它用於描述網路上的乙個資源,而http的get、post、put、delete就對應著對這個資源的查

、改、增

、刪4個操作。所以get和post的第乙個區別:get一般用於獲取/查詢資源

資訊,post一般用於更新

資源資訊。

1、根據http規範,get用於資訊獲取,而且應該是安全和冪等的,安全和冪等的意思是:

(1)所謂安全意味著該操作用於獲取資訊而不是修改資訊,換句話說,get請求一般不應該產生***,也就是說,它僅僅是獲取資源資訊,就像資料庫查詢一樣,不會修改、增加資料,不影響資源的狀態

(2)所謂冪等意味著對同乙個url的多個請求應該返回相同的結果

比如乙個新聞**,讀者開啟乙個鏈結獲取新聞應該使用get實現

另外還有很重要的一點,從瀏覽器發起一次http請求:

1、一些靜態資源比如.css檔案、.js檔案是很少發生變化的,讓這些檔案放在瀏覽器快取裡面,請求的時候從瀏覽器快取裡面拿這些資源而不去伺服器上拿,可以有效地減輕服務端的壓力,加快瀏覽器的訪問速度

2、伺服器響應完可能將一些資源放到客戶端的瀏覽器快取中

而只有get方式才能從快取中存、取資源

,post方式則不可以。

事實說話:表象上的區別

說完原理性的區別,我們用事實說話,從表象上看一下get和post的區別,首先我寫乙個servlet:

}web.xml裡面的servlet配置就不放了,都會。

1、url請求的方式為get方式

。我從瀏覽器導航欄中輸入"http://localhost:8080/testweb/submitmethod",看一下列印結果:

enter getandpostservlet.doget()

a =null

2、表單預設提交方式為get方式

。我的jsp頁面為:

...

...

控制台列印的內容為:

enter getandpostservlet.doget()

a =null

3、表單的action中?後面帶了引數,只有post方式可以取到。

jsp頁面不變,先讓表單以get方式提交,執行結果為:

enter getandpostservlet.doget()

a =null

如果我把表單提交方式改為post的:

...

...

後台列印的結果為:

enter getandpostservlet.dopost()

a =1

4、表單提交,get方式會把所有控制項值都帶在action後面,即使是password,也是明文形式的,post方式則不會

。我把jsp修改一下:

...

...

頁面上的表單這麼寫:

點一下提交,導航欄裡面的url為"http://localhost:8080/testweb/submitmethod?name=aaa&password=bbbccc&***=0&hobby=0&hobby=1",看到即使是密文的密碼,在url裡面也變成了明文了,原有的"a=1"並不出現在url裡面。

把表單給成post的,點提交,導航欄裡面的url為"http://localhost:8080/testweb/submitmethod?a=1",action裡面怎麼樣還是怎麼樣。

從這個角度說,說post提交表單比get方式提交表單更安全

也是有道理的,因為get方式提交的資料,表單引數是在url中的,而post方式提交的資料,表單引數是在請求體中的,可以這麼證明這一點,f12檢視請求資訊,post方式提交的時候:

content-length即請求體,現在是46,checkbox我只選乙個的時候,content-length變成了35,而get方式提交資料則沒有content-length這個頭資訊,證明了post方式提交的表單引數存放在http body中。

get和post的區別

在b s應用程式中,前台與後台的資料互動,都是通過html中form表單完成的。form提供了兩種資料傳輸的方式 get和post。雖然它們都是資料的提交方式,但是在實際傳輸時確有很大的不同,並且可能會對資料產生嚴重的影響。雖然為了方便的得到變數值,web容器已經遮蔽了二者的一些差異,但是了解二者的...

post和get的區別?

1.get是從伺服器上獲取資料,post是向伺服器傳送資料。get 和 post只是一種傳遞資料的方式,get也可以把資料傳到伺服器,他們的本質都是傳送請求和接收結果。只是組織格式和資料量上面有差別,http協議裡面有介紹。2.get是把引數資料佇列加到提交表單的action屬性所指的url中,值和...

post和get的區別

兩者的主要區別在資料傳送方式和接收方式上 1 在客戶端 get方式是通過url提交資料 post方式是提交後位址列是不變的 2 在伺服器端 get方式是利用解析位址列字串的方式,伺服器獲取get提交的值 post方式是以form的形式提交表單引數 一般來說,盡量避免使用get方式提交表單,因為有可能...