1. 程式人生 > >基礎概念:get 和 post請求的區別

基礎概念:get 和 post請求的區別

1、GET在瀏覽器回退時是無害的,而POST會再次提交請求。
2、GET產生的URL地址可以被Bookmark,而POST不可以。
3、GET請求會被瀏覽器主動cache,而POST不會,除非手動設定。
4、GET請求只能進行url編碼,而POST支援多種編碼方式。

編碼方式 說明
application/x-www-form-urlencoded 窗體資料被編碼為名稱/值對。(預設)。空格轉換為 “+” 加號,但不對特殊字元編碼。瀏覽器用x-www-form-urlencoded的編碼方式把form資料轉換成一個字串(name1=value1&name2=value2…),然後把這個字串append到url後面,用?分割,載入這個新的url。 當action為post時候,瀏覽器把form資料封裝到http body中,然後傳送到server。
multipart/form-data 窗體資料被編碼為一條訊息,頁上的每個控制元件對應訊息中的一個部分。
text/plain 窗體資料以純文字形式進行編碼,其中不含任何控制元件或格式字元。
JSON 以純文字形式進行編碼,其格式為JSON。

5、GET請求引數會被完整保留在瀏覽器歷史記錄裡,而POST中的引數不會被保留。
6、GET請求在URL中傳送的引數是有長度限制的,而POST麼有。
7、對引數的資料型別,GET只接受ASCII字元,而POST沒有限制。
8、GET比POST更不安全,因為引數直接暴露在URL上,所以不能用來傳遞敏感資訊。
9、GET引數通過URL傳遞,POST放在Request body中。
10、GET和POST是HTTP協議中的兩種傳送請求的方法。
HTTP是基於TCP/IP關於資料如何在全球資訊網中如何通訊的協議。HTTP的底層是TCP/IP。所以GET和POST的底層也是TCP/IP,也就是說,GET/POST都是TCP連結。GET和POST能做的事情是一樣一樣的。你要給GET加上request body,給POST帶上url引數,技術上是完全行的通的。
11、GET產生一個TCP資料包;POST產生兩個TCP資料包。
對於GET方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);而對於POST,瀏覽器先發送header,伺服器響應100 continue,瀏覽器再發送data,伺服器響應200 ok(返回資料)

GET POST
後退按鈕/重新整理 無害 資料會被重新提交(瀏覽器應該告知使用者資料會被重新提交)。
書籤 可收藏為書籤 不可收藏為書籤
快取 能被快取 不能快取
編碼型別 application/x-www-form-urlencoded application/x-www-form-urlencoded 或 multipart/form-data。為二進位制資料使用多重編碼。
歷史 引數保留在瀏覽器歷史中。 引數不會儲存在瀏覽器歷史中。
對資料長度的限制 是的。當傳送資料時,GET 方法向 URL 新增資料;URL 的長度是受限制的(URL 的最大長度是 2048 個字元)。 無限制。
對資料型別的限制 只允許 ASCII 字元。 沒有限制。也允許二進位制資料。
安全性 與 POST 相比,GET 的安全性較差,因為所傳送的資料是 URL 的一部分。在傳送密碼或其他敏感資訊時絕不要使用 GET ! POST 比 GET 更安全,因為引數不會被儲存在瀏覽器歷史或 web 伺服器日誌中。
可見性 資料在 URL 中對所有人都是可見的。 資料不會顯示在 URL 中。

參考:https://blog.csdn.net/wy0123/article/details/79345793