POST方法和GET方法的區別

2021-09-24 21:27:03 字數 1068 閱讀 1466

標準答案:

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

(2)get產生的url位址可以被新增為書籤,而post不可以。

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

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

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

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

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

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

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

get方法是通過url提交資料,提交的資料在url中直接可以看到。雖然http協議對於url沒有長度的限制,但幾乎所有的瀏覽器對於url的長度都是有限制的,所以get方法在傳遞的資料長度是有限制的。

但是post不一樣,post是通過header傳遞資料,長度沒有限制,且傳遞的資料在明面上不能直接看出。

就安全性而言,post比get要稍微安全點,因為get傳送的資料就在url中。我們在傳送密碼之類的資訊,千萬不要用get方法。

但就本質而言,兩者都是http協議中的請求方法,底層的實現都是基於tcp/ip協議。因為http在網路上是明文傳輸的,所以get和post方法傳遞的內容都可以通過抓包來獲取,所以兩者都不太安全。

一般來說,做資料查詢時建議用get方法,做資料修改建議用post方法。

get傳送資料時,是將header和data一起傳送出去,伺服器響應20。

post先將header傳送出去,伺服器響應100 continue,然後再傳送data,伺服器響應200。

看起來,get的效能應該會好一丟丟。但是!在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網路環境差的情況下,兩次包的tcp在驗證資料報完整性上,有非常大的優點。

當然了也不是所有的post都會傳送兩次包,根據瀏覽器不同有所不同。

推一條特別叼的博文,至少我是這麼覺得的

GET方法和POST方法的區別

下面從http協議的角度來描述get方法和post的區別 1 get重點是從伺服器上獲取資源,post重點是向伺服器傳送資源 2 get傳輸資料是通過url請求,以id value的形式,置於url後,並用?連線,多個請求資料間用 連線,這個過程是使用者可見的 post傳輸資料是利用http的pos...

get方法和post方法的區別?

get是從伺服器上獲取資料,post是向伺服器傳送資料,會新增資源或者修改已有資源,因此get一般用於查詢,psot多用新增和修改 get和post在本質上來說沒有多大區別,都是tcp鏈結,要說最大的區別就是get產生乙個tcp資料報 post產生兩個tcp資料報。詳細來說 對於get方式的請求,瀏...

Get和Post方法的區別

http協議定義了很多與伺服器互動的方法,最基本的有4種,分別是get,post,put,delete.乙個url位址用於描述乙個網路上的資源,而http中的get,post,put,delete就對應著對這個資源的查,改,增,刪4個操作。我們最常見的就是get和post了。get一般用於獲取 查詢...