GET和POST到底有什麼區別?

2021-09-26 13:50:16 字數 1096 閱讀 6231

get和post是我們web開發時最常用到的兩種http請求方法,其實http最初定義了八種方法,而這八種方法在本質上沒有任何區別。它們底層的實現也都是基於tcp/ip協議,之所以定義了這麼多,只是讓http請求更加的語義化而已。

如果說到區別,那也僅僅是資料傳輸形式上的差異,我們先來看一下這八種方法的定義:

此處我們只對get和post兩種方法做比較。

最直觀的區別就是,get會把引數拼裝在url上,而post會將引數http報文的主體部分,這就引申出了第2、3、4、5點的差異。

由於瀏覽器或者伺服器對url長度的限制,而http報文主體沒有長度限制,所以出現了一種說法:get請求有長度限制,而post沒有(瀏覽器是對url有長度限制,而伺服器是對整個請求頭長度有限制,包括了通用資訊頭、請求頭、響應頭的總長度)

get 請求可以被快取,post 不能

get 請求保留在瀏覽器歷史記錄中,post 不能

get 請求可被收藏為書籤,post 不能

如果你的 get 請求中有非 ascii 字元,會在請求之前進行轉碼,得到轉碼後的 url,然後去發起 get 請求

下面的**比較了二者的不同。

getpost

後退按鈕/重新整理

無害資料會被重新提交(瀏覽器應該告知使用者資料會被重新提交)。

書籤可收藏為書籤

不可收藏為書籤

快取能被快取

不能快取

編碼型別

歷史引數保留在瀏覽器歷史中。

引數不會儲存在瀏覽器歷史中。

對資料長度的限制

是的。當傳送資料時,get 方法向 url 新增資料;url 的長度是受限制的(url 的最大長度是 2048 個字元)。

無限制。

對資料型別的限制

只允許 ascii 字元。

沒有限制。也允許二進位制資料。

安全性與 post 相比,get 的安全性較差,因為所傳送的資料是 url 的一部分。

在傳送密碼或其他敏感資訊時絕不要使用 get !

post 比 get 更安全,因為引數不會被儲存在瀏覽器歷史或 web 伺服器日誌中。

可見性資料在 url 中對所有人都是可見的。

資料不會顯示在 url 中。

GET和POST請求到底有什麼區別?

看到這個標題,想必大部分人都已經想關掉這篇部落格了。先別急,你真的知道這兩個的區別嗎?做過web開發的朋友可能很熟悉,看到這個問題能立馬脫口而出二者的區別。看起來很標準的答案,我相信大部分的人都會這麼去回答。那麼很遺憾,恕我直言你可能對這兩種請求方式並不熟悉。實際上,get和post請求本質上並無區...

POST和GET有什麼區別

size medium 一 表面區別 我們知道表單form的提交方式有post和get兩種方式,但是這兩種方式有什麼區別呢,知其然也要知其所以然。在操作的時候,我們可以看到一些明顯的區別,從操作表面上來看get把引數新增到action屬性指定的位址中,並以錨方式開啟。在form提交中,可以通過met...

get和post有什麼區別

get 和 post 只是 http 協議中兩種請求方式 異曲同工 而 http 協議是基於 tcp ip 的應用層協議,無論 get 還是 post,用的都是同乙個傳輸層協議,所以在傳輸上,沒有區別。有人說post 比 get 安全,因為資料在位址列上不可見。然而,從傳輸的角度來說,他們都是不安全...