post和get都是向伺服器提交資料,並且都會從伺服器獲取資料。
區別:1、傳送方式:get通過位址列傳輸,post通過報文傳輸。
2、傳送長度:get引數有長度限制(受限於url長度),而post無限制
3、get和post還有乙個重大區別,簡單的說:
get產生乙個tcp資料報;post產生兩個tcp資料報
長的說:
對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);
而對於post,瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。
也就是說,get只需要汽車跑一趟就把貨送到了,而post得跑兩趟,第一趟,先去和伺服器打個招呼「嗨,我等下要送一批貨來,你們開啟門迎接我」,然後再回頭把貨送過去。
因為post需要兩步,時間上消耗的要多一點,看起來get比post更有效。因此yahoo團隊有推薦用get替換post來優化**效能。但這是乙個坑!跳入需謹慎。為什麼?
1. get與post都有自己的語義,不能隨便混用。
2. 據研究,在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網路環境差的情況下,兩次包的tcp在驗證資料報完整性上,有非常大的優點。
3. 並不是所有瀏覽器都會在post中傳送兩次包,firefox就只傳送一次。
建議:1、get方式的安全性較post方式要差些,包含機密資訊的話,建議用post資料提交方式;
2、在做資料查詢時,建議用get方式;而在做資料新增、修改或刪除時,建議用post方式;
案例:一般情況下,登入的時候都是用的post傳輸,涉及到密碼傳輸,而頁面查詢的時候,如文章id查詢文章,用get 位址列的鏈結為:article.php?id=11,用post查詢位址列鏈結為:article.php, 不會將傳輸的資料展現出來。
增加:get傳輸資料是通過url請求,以field(字段)= value的形式,置於url後,並用"?"連線,多個請求資料間用"&"連線,如這個過程使用者是可見的;post傳輸資料通過http的post機制,將字段與對應值封存在請求實體中傳送給伺服器,這個過程對使用者是不可見的;
get傳輸的資料量小,因為受url長度限制,但效率較高,post可以傳輸大量資料,所以上傳檔案時只能用post方式;
post較get安全性較高,get是不安全的,因為url是可見的,可能會洩露私密資訊,如密碼等.
面試GET和POST區別?沒啥區別
http是明文協議不安全,https加密 getpsot get瀏覽器回退無害 post會再次請求 get被瀏覽器主動cache post不會 可以設定 引數在url 引數在body 不完全,比post還差 不安全引數長度限制2048 不受限制 ascii 任意 contet type get和po...
get和post區別 面試用
get和post本質上就是tcp鏈結,並無差別。但是由於http的規定和瀏覽器 伺服器的限制,導致他們在應用過程中體現出一些不同。長的說 對於get方式的請求,瀏覽器會把http header和data一併傳送出去,伺服器響應200 返回資料 而對於post,瀏覽器先傳送header,伺服器響應10...
GET和POST的區別 面試系列
http定義了與伺服器互動的不同方法,最基本的方法有4種,分別是get,post,put,delete。1.url可見性 get,引數url可見 post,url引數不可見 get把請求的資料放在url上,即http協議頭上,其格式為 以?分割url和傳輸資料,引數之間以 相連 post把資料放在h...