get和post的區別

2021-08-17 06:29:49 字數 1232 閱讀 3352

get和post這個問題,之前一直沒有深入研究,但是在用到這些的過程中也問過一些同學,給我講完之後也是感覺很模糊。總感覺這兩個差別不大 ,因為兩者最直觀的就是語義上的區別,get用於獲取資料,post用於提交資料,但是發現我能用get進行資料更新操作,也能用post進行查詢操作,反正用哪個都能實現目前所需要的功能。

這個時候就有些懵了,兩者到底有沒有區別?

今天有時間突然想詳細了解一下他們的區別。知乎大佬說這兩者區別還是很大的,顛倒兩者可能會造成非常糟糕的後果。

此段對上一段括號中內容作出解釋:get是通過url提交資料,因此get可提交的資料量跟url所能達到的最大長度有直接關係,但實際上http協議對url長度是沒有限制的,限制url長度的大多數是瀏覽器或者伺服器配置引數。同樣,http協議也沒有對post進行任何限制,一般受限於伺服器配置和記憶體大小。

為什麼說顛倒兩者會有非常糟糕的後果呢?

比如說你在京東看到了喜歡的商品要分享給朋友,你看到的url是:   若這個**的後台是通過get獲取的資料,那麼你分享出去的url為:,若是用post請求獲取到的這個商品介面,那麼分享出去的url則為:

簡單的說,從這一方面來講,get獲取到的頁面有利於傳播,而post獲取到的頁面有利於保護隱私。

get和post的安全性

get是通過url方式請求,可以直接看到,明文傳輸。

post是通過請求header方式,可以通過開發者工具或者抓包看到,同樣也是明文的。

get請求或儲存在瀏覽器歷史記錄中,還可能會儲存在web的日誌中。

get和post對伺服器的狀態

根據http的設計,在看到get的時候,都期望這個請求對伺服器沒有修改,在看到post的時候,都認為對伺服器產生了修改。

冪等和不冪等

冪等是指同乙個請求的方法執行多次和僅執行一次的效果完全相同。

按照rfc規範,put和delete的安全方法都是冪等的,雖說是規範,但是伺服器端實現是否冪等是無法確保的。

引入冪等主要是為了處理同乙個請求重**送的情況,比如在請求響應前失去連線,如果方法是冪等的,就可以放心的重發請求。這也是瀏覽器在後退或重新整理時遇到post會給使用者提示可能會丟失資料的原因,post是不冪等的,重複請求可能會帶來意想不到的後果。

根據上文,加上其他大佬所言和自己的理解,總的來說get的語義是請求獲取指定的資源。get方法是安全、冪等、可快取的,get方法的報文主體沒有任何語義。

post的語義是根據請求負荷對指定的資源做出處理,具體的處理方式根據資源型別而定。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方式提交表單,因為有可能...