一、http方法
http定義了與伺服器互動的不同方法,最常用的方法有四種put,delete、post,get,即增刪改查。
1. get
2. post
3. delete
刪除資料。可以通過get/post來實現。
4. put
增加、放置資料,可以通過get/post來實現。
二、w3school給出的get和post的差別分類
getpost
後退按鈕/重新整理
無害資料會被重新提交(瀏覽器應該告知使用者資料會被重新提交
書籤可收藏為書籤
不可收藏為書籤
快取能被快取
不能被快取
編碼型別
歷史引數保留在瀏覽器歷史中
不儲存對資料長度的顯示
get 方法向 url 新增資料;url 的長度是受限制的(url 的最大長度是 2048 個字元)
無限制對資料型別的限制
只允許ascii字元
沒有限制,允許二進位制資料
安全性與post相比,get的安全性較差,所傳送的資料是url的一部分
post 比 get 更安全,因為引數不會被儲存在瀏覽器歷史或 web 伺服器日誌中。
可見性資料在 url 中對所有人都是可見的
資料不會顯示在 url 中
三、get和post在報文上的差別
同:get和post只是http協議中兩種請求方式,而http協議是基於tcp/ip的應用層協議,無論get還是post,用的都是同乙個傳輸層協議,所以在傳輸上沒有區別。
異:
抓包體現:
四、常見問題
1. get方法引數寫法是固定的嗎?
在約定中,我們的引數是寫在?後面,用&分割。
解析報文的過程是通過獲取tcp資料,用正則等工具從資料中獲取header和body,從而提取資料,也就是說我們也可以自己約定引數的寫法,只要伺服器能夠解發布來就行了,目前比較流行的一種寫法是:
2. post方法比get方法安全?
3. get方法的長度限制是怎麼回事?
首先說明這一點,http協議沒有body和url的長度限制,對url限制的大多是瀏覽器和伺服器的原因。
伺服器是因為處理長url要消耗比較多的資源,為了效能和安全(防止惡意構造長url來攻擊)考慮,會給url長度加限制。
4. post方法會產生兩個tcp資料報
有些文章當中提到,post會將header和body分開傳送,先傳送header,服務端返回100狀態碼在傳送body。
http協議中沒有明確說明post會產生兩個tcp資料報,而且實際測試chrome發現,header和body不會分開傳送。
所以,header和body分開傳送是部分瀏覽器或框架的請求方法,不屬於post必然行為。
原文參考:
面試題 深入理解get和post
推薦閱讀 微服務還能火多久?首先,我們要明白,get和post本質上都是tcp鏈結,那他們為什麼會不一樣?就好像,在網際網路世界中,http 交通規則 會給不同服務型別的tcp 汽車 貼上不同的標籤 因為標籤不同所以使用方法也不一樣。get是通過url傳遞引數,post則是將資料放置在request...
POST請求與GET請求(面試題)
一 原理區別 http定義了與伺服器互動的不同方法,其中最基本的四種 get,post,put,delete,head,其中get和head被稱為安全方法,因為使用get和head的http請求不會產生什麼動作。不會產生動作意味著get和head的http請求不會在伺服器上產生任何結果。但是安全方法...
面試題11 總結get和post基本區別
1 get引數通過url傳遞,post放在request body中。2 get請求在url中傳遞的引數是有長度限制的,而post沒有。3 get比post更不安全,因為引數直接暴露在url中,所以不能用來傳遞敏感資訊 1 get請求只能進行url編碼,而post支援多種編碼方式 2 get請求會瀏...