標準答案:
(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一般用於獲取 查詢...