jmeter之get請求和post請求區別

2021-09-27 12:18:10 字數 3536 閱讀 7904

有什麼區別呢?

get和post是什麼?http協議中的兩種傳送請求的方法。

http是什麼?http是基於tcp/ip的關於資料如何在全球資訊網中如何通訊的協議。

http的底層是tcp/ip。所以get和post的底層也是tcp/ip,也就是說,get/post都是tcp鏈結。get和post能做的事情是一樣一樣的。你要給get加上request body,給post帶上url引數,技術上是完全行的通的。

以上所述,那post和get到底有啥區別呢?來則小故事了解一下!

在全球資訊網世界中,tcp就像汽車,我們用tcp來運輸資料,它很可靠,從來不會發生丟件少件的現象。但是如果路上跑的全是看起來一模一樣的汽車,那這個世界看起來是一團混亂,送急件的汽車可能被前面滿載貨物的汽車攔堵在路上,整個交通系統一定會癱瘓。為了避免這種情況發生,交通規則http誕生了。http給汽車運輸設定了好幾個服務類別,有get, post, put, delete等等,http規定,當執行get請求的時候,要給汽車貼上get的標籤(設定method為get),而且要求把傳送的資料放在車頂上(url中)以方便記錄。如果是post請求,就要在車上貼上post的標籤,並把貨物放在車廂裡。當然,你也可以在get的時候往車廂內偷偷藏點貨物,但是這是很不光彩;也可以在post的時候在車頂上也放一些資料,讓人覺得傻乎乎的。http只是個行為準則,而tcp才是get和post怎麼實現的基本。

嘿嘿 ,還沒完,還要再來則小故事噢!!!

在全球資訊網世界中,還有另乙個重要的角色:運輸公司。不同的瀏覽器(發起http請求)和伺服器(接受http請求)就是不同的運輸公司。 雖然理論上,你可以在車頂上無限的堆貨物(url中無限加引數)。但是運輸公司可不傻,裝貨和卸貨也是有很大成本的,他們會限制單次運輸量來控制風險,資料量太大對瀏覽器和伺服器都是很大負擔。業界不成文的規定是,(大多數)瀏覽器通常都會限制url長度在2k個位元組,而(大多數)伺服器最多處理64k大小的url。超過的部分,恕不處理。如果你用get服務,在request body偷偷藏了資料,不同伺服器的處理方式也是不同的,有些伺服器會幫你卸貨,讀出資料,有些伺服器直接忽略,所以,雖然get可以帶request body,也不能保證一定能被接收到哦。

嘿嘿嘿,現在知道,get和post本質上就是tcp鏈結,並無差別。但是由於http的規定和瀏覽器/伺服器的限制,導致他們在應用過程中體現出一些不同。

嘿嘿嘿,還有重要的一點噢

get和post還有乙個重大區別,簡單的說:

get產生乙個tcp資料報;post產生兩個tcp資料報。

post請求的過程:

(1)瀏覽器請求tcp連線(第一次握手)

(2)伺服器答應進行tcp連線(第二次握手)

(3)瀏覽器確認,並傳送post請求頭(第三次握手,這個報文比較小,所以http會在此時進行第一次資料傳送)

(4)伺服器返回100continue響應

(5)瀏覽器傳送資料

(6)伺服器返回200 ok響應

get請求的過程:

(1)瀏覽器請求tcp連線(第一次握手)

(2)伺服器答應進行tcp連線(第二次握手)

(3)瀏覽器確認,並傳送get請求頭和資料(第三次握手,這個報文比較小,所以http會在此時進行第一次資料傳送)

(4)伺服器返回200 ok響應

往長了講:

對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);

而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。

也就是說,get只需要汽車跑一趟就把貨送到了,而post得跑兩趟,第一趟,先去和伺服器打個招呼「嗨,我等下要送一批貨來,你們開啟門迎接我」,然後再回頭把貨送過去。

get與post都有自己的語義,不能隨便混用。

據研究,在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網路環境差的情況下,兩次包的tcp在驗證資料報完整性上,有非常大的優點。

並不是所有瀏覽器都會在post中傳送兩次包,firefox就只傳送一次。

嘿嘿嘿,還沒結束哦,只是小故事結束,小故事中提到的交通規則中的服務類別本質區別是知道啦,但是交通規則和服務類別常用的準規則還沒開始哦,不饒灣子。。。。

如圖所示:

post請求:資料和位址分開請求

如圖所示:

get 和 post 只是 http 協議中兩種請求方式(異曲同工),而 http 協議是基於 tcp/ip 的應用層協議,無論 get 還是 post,用的都是同乙個傳輸層協議,所以在傳輸上,沒有區別。

不帶引數時

最大區別就是第一行方法名不同, 僅僅是報文的幾個字元不同而已。

post 方法請求報文第一行是這樣的 post /url http/1.1 get 方法請求報文第一行是這樣的 get /url http/1.1

帶引數時

在約定中,get 方法的引數應該放在 url 中,post 方法引數應該放在 body 中

get引數有長度限制(受限於url長度),而post無限制。

注:http 協議沒有 body 和 url 的長度限制,對 url 限制的大多是瀏覽器和伺服器的原因。伺服器是因為處理長 url 要消耗比較多的資源,為了效能和安全(防止惡意構造長 url 來攻擊)考慮,會給 url 長度加限制。

get請求會直接把請求資料暴露在位址列,而post則不會。

get方式的安全性較post方式要差些,包含機密資訊的話,建議用post資料提交方式;

在做資料查詢時,建議用get方式;而在做資料新增、修改或刪除時,建議用post方式;

get傳送的資料量較小,不能大於2kb。post傳送的資料量較大,一般被預設為不受限制。但理論上,iis4中最大量為80kb,iis5中為100kb。

get只接受ascii字元,而post沒有限制。

還沒結束,小故事和使用區別均來自網路,僅作為學習筆記可供參考!!!

Jmeter介面測試之Get請求

一 二 將使用的協議 訪問 請求方法 訪問路徑等基本資訊填入到http請求中。三 在響應斷言中加入需要檢驗的文字 errcode 0 四 在beanshellpreprocesson中,根據介面文件,將id和companyid,寫成json串。再將加了密的值傳給sign。引數名 含義 必填 型別 長...

get請求和post請求

1.get請求的請求資料在url中,post請求的請求資料在請求體中 2.資料長度,get請求有長度限制,post請求的長度限制由伺服器決定 3.資料安全性,兩者都不安全,但post相對安全一些 4.應用場景不同,get請求一般用於訪問頁面,post請求一般用於上傳資料 response reque...

GET請求和POST請求

http請求,由客戶端向服務端發出,可以分為四部分內容 請求方法 request method 請求的 request url 請求頭 request headers 請求體 request body 請求方法有get head post put delete options connect tra...