post和get是http請求的兩種方式,都可實現將資料從瀏覽器向伺服器傳送帶引數的請求。
http請求底層協議都是tcp/ip,所以兩者沒有本質的區別。
get產生乙個tcp資料報;post產生兩個tcp資料報
把引數通過key/value形式存放在url裡面,一般需要保密的請求不使用get。
瀏覽器會把http header和data一併傳送出去,伺服器響應200(返回資料);
它用於修改伺服器上的資料,一般這些資料是應該保密的。
瀏覽器先傳送header,伺服器響應100 continue,瀏覽器再傳送data,伺服器響應200 ok(返回資料)。
也就是說,get只需要汽車跑一趟就把貨送到了,而post得跑兩趟,第一趟,先去和伺服器打個招呼「嗨,我等下要送一批貨來,你們開啟門迎接我」,然後再回頭把貨送過去。
區別post也不安全,因為http是明文傳輸抓包就能獲取資料內容,要想安全還得加密)
get回退瀏覽器無害,post會再次提交請求(get方法回退後瀏覽器再快取中拿結果,post每次都會建立新資源)
get提交的資料大小有限制(是因為瀏覽器對url的長度有限制,get本身沒有限制),post沒有
get可以被儲存為書籤,post不可以
get能被快取,post不能
get只允許ascii字元,post沒有限制
get會儲存再瀏覽器歷史記錄中,post不會。
1.在做資料查詢時,建議用get方式;而在做資料新增、修改或刪除時,建議用post方式;
2. 據研究,在網路環境好的情況下,發一次包的時間和發兩次包的時間差別基本可以無視。而在網路環境差的情況下,兩次包的tcp在驗證資料報完整性上,有非常大的優點。
3. 並不是所有瀏覽器都會在post中傳送兩次包,firefox就只傳送一次。
4.get方式的安全性較post方式要差些,包含機密資訊的話,建議用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方式只能支援ascii字元,向伺服器傳的中文字元可能會亂碼,post支援標準字符集,可以正確傳遞中文字元。
get和post的區別
在b s應用程式中,前台與後台的資料互動,都是通過html中form表單完成的。form提供了兩種資料傳輸的方式 get和post。雖然它們都是資料的提交方式,但是在實際傳輸時確有很大的不同,並且可能會對資料產生嚴重的影響。雖然為了方便的得到變數值,web容器已經遮蔽了二者的一些差異,但是了解二者的...
post和get的區別?
1.get是從伺服器上獲取資料,post是向伺服器傳送資料。get 和 post只是一種傳遞資料的方式,get也可以把資料傳到伺服器,他們的本質都是傳送請求和接收結果。只是組織格式和資料量上面有差別,http協議裡面有介紹。2.get是把引數資料佇列加到提交表單的action屬性所指的url中,值和...
post和get的區別
兩者的主要區別在資料傳送方式和接收方式上 1 在客戶端 get方式是通過url提交資料 post方式是提交後位址列是不變的 2 在伺服器端 get方式是利用解析位址列字串的方式,伺服器獲取get提交的值 post方式是以form的形式提交表單引數 一般來說,盡量避免使用get方式提交表單,因為有可能...