http請求中get和post方法的區別

2021-10-10 07:42:17 字數 1765 閱讀 2223

一、原理區別

一般我們在瀏覽器輸入乙個**訪問**都是get請求;再form表單中,可以通過設定method指定提交方式為get或者post提交方式,預設為get提交方式。

http定義了與伺服器互動的不同方法,其中最基本的四種:get,post,put,delete,head,其中get和head被稱為安全方法,因為使用get和head的http請求不會產生什麼動作。不會產生動作意味著get和head的http請求不會在伺服器上產生任何結果。但是安全方法並不是什麼動作都不產生,這裡的安全方法僅僅指不會修改資訊。

二、使用時最直觀的區別

最直觀的區別就是get把引數包含在url中,post通過request body傳遞引數。

get請求:

post請求:

三、為什麼get比post更快

1.post請求包含更多的請求頭

因為post需要在請求的body部分包含資料,所以會多了幾個資料描述部分的首部字段(如:content-type),這其實是微乎其微的。

2.最重要的一條,post在真正接收資料之前會先將請求頭髮送給伺服器進行確認,然後才真正傳送資料

post請求的過程:

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

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

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

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

(5)瀏覽器傳送資料

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

get請求的過程:

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

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

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

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

也就是說,目測get的總耗是post的2/3左右,這個口說無憑,網上已經有網友進行過測試。

3.get會將資料快取起來,而post不會

可以做個簡短的測試,使用ajax採用get方式請求靜態資料(比如html頁面,)的時候,如果兩次傳輸的資料相同,第二次以後消耗的時間將會在10ms以內(chrome測試),而post每次消耗的時間都差不多。經測試,chrome和firefox下如果檢測到get請求的是靜態資源,則會快取,如果是資料,則不會快取,但是ie什麼都會快取起來,當然,應該沒有人用post去獲取靜態資料吧,反正我是沒見過。

四、面試是一般怎麼回答get和post的區別

(1)post更安全(不會作為url的一部分,不會被快取、儲存在伺服器日誌、以及瀏覽器瀏覽記錄中)

(2)post傳送的資料更大(get有url長度限制)

(3)post能傳送更多的資料型別(get只能傳送ascii字元)

(4)post比get慢

(5)post用於修改和寫入資料,get一般用於搜尋排序和篩選之類的操作(**,支付寶的搜尋查詢都是get提交),目的是資源的獲取,讀取資料

五、測試get和post請求的工具

get和post請求一般使用的是介面測試工具,介面測試工具我個人一般使用的是:apipost和jmeter。

apipost - 可直接生成文件的api除錯、管理工具 www.apipost.cn

Http中get和post請求

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

HTTP中GET和POST請求區別

1 get是從伺服器上 獲取資料,post是向伺服器傳送資料。1 在客戶端,get方式在通過 url提交資料,資料 在url中 可以看到 post方式,資料放置在 html header內 提交。2 對於get方式,伺服器端用request.querystring獲取變數的值,對於post方式,伺服...

HTTP請求中get和post區別

1 get請求,請求的資料會附加在url之後,以?分割url和傳輸資料,多個引數用 連線。url的編碼格式採用的是ascii編碼,而不是uniclde,即是說所有的非ascii字元都要編碼之後再傳輸。2 get提交有資料大小的限制,一般是不超過1024個位元組,而這種說法也不完全準確,http協議並...