首先要明確的是,get和post沒有本質上的區別
究其原因其實很簡單,因為他們底層都是tcp,只不過http作為應用層協議規定了一些標準,比如get要url中傳遞引數,post要把引數放在request body裡,所以當然可以不按標準,在get請求的request body裡、post請求的url中塞引數,只不過是不符合標準,server給出的響應不一定符合你的預期就是了(有些可能會解析,有些可能會直接忽略)。至於傳輸引數的大小限制,則是完全取決於實現者(見下面第2條)。
1、get請求的引數通過url傳遞,post的則放在request body中。
2、get請求在url中傳遞的引數是有長度限制的(具體的長度限制是由瀏覽器決定的,不同瀏覽器可能存在差異,rfc標準中倒是沒有規定),而post的request body不受url長度限制(由伺服器決定)。
3、get比post更不安全,因為引數直接暴露在url中,所以不能用來傳遞敏感資訊。
4、get請求只能進行url編碼,而post支援多種編碼方式,比如表單資料(multipart/form-data)、文字資料(text/plain)等。
5、get請求瀏覽器會主動cache,而post不會(除非手動設定)。
6、get請求引數會被完整保留在瀏覽歷史記錄裡,而post中的引數不會被保留。
7、get產生1個tcp資料報;post可能產生2個tcp資料報。對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料),而這也分瀏覽器,比如firefox就是1個包。2個包的優點是在網路條件差的時候可以驗證資料報的完整性,而缺點則是比較花時間、效率比較低、效能略差些(不過在網路條件好的時候完全可以忽略不計),畢竟是兩個rtt。
Get和Post請求區別
get和post是什麼?http協議中的兩種傳送請求的方法。http是什麼?http是基於tcp ip的關於資料如何在全球資訊網中如何通訊的協議。http的底層是tcp ip。所以get和post的底層也是tcp ip,也就是說,get post都是tcp鏈結。get和post能做的事情是一樣一樣的...
GET 和 POST 請求區別
1 get是從伺服器上獲取資料。2 post是向伺服器傳送資料。1 get是把引數資料佇列加到提交表單的action屬性所指的url中,值和表單內各個字段一一對應,在url中可以看到。2 post是通過http post機制,將表單內各個字段與其內容放置在html header內一起傳送到actio...
get和post請求區別
get和post請求區別 1 get產生乙個tcp資料報 post產生兩個tcp資料報。對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200 返回資料 而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器...