GET和POST的區別

2021-08-21 14:42:23 字數 1754 閱讀 4610

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

最基本的解釋:get是向伺服器端請求資料,post是提交資料。

操作方式

資料位置

明文密文

資料安全

長度限制

應用場景

gethttp包頭

明文不安全

長度較小

查詢資料

post

http正文

可明可密

安全支援較大資料傳輸

修改資料

get在瀏覽器回退時是無害的,而post會再次提交請求。

get產生的url位址可以被bookmark,而post不可以。

get請求會被瀏覽器主動cache,而post不會,除非手動設定。

get請求只能進行url編碼,而post支援多種編碼方式。

get請求引數會被完整保留在瀏覽器歷史記錄裡,而post中的引數不會被保留。

get請求在url中傳送的引數是有長度限制的,而post麼有。

對引數的資料型別,get只接受ascii字元,而post沒有限制。

get比post更不安全,因為引數直接暴露在url上,所以不能用來傳遞敏感資訊。

get引數通過url傳遞,post放在request body中。

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

簡單的說:get產生乙個tcp資料報;post產生兩個tcp資料報。即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不會。

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

http協議並未規定get和post的長度限制

get的最大長度限制是因為瀏覽器和web伺服器限制了url的長度

不同的瀏覽器和web伺服器,限制的最大長度不一樣

要支援ie,則最大長度為2083byte,若支援chrome,則最大長度8182byte

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方式提交表單,因為有可能...