在討論get方法和post方法的區別時,我們經常會提到兩點:
1、get傳送的數據量較小,不能大於2KB,而post傳送的數據量較大,一般被默認爲不受限制;
2、get安全性非常低,但是post安全性較高;
究其根本,爲什麼呢?就需要提到http報文以及http報文的格式。
首先我們先看一下HTTP請求報文的通用格式:
在《計算機網絡——自頂向下方法》一書中提到很關鍵的兩句話:
使用get方法時實體主體爲空,而使用post方法時才使用。
HTML表單經常使用GET方法,將輸入數據(在表單字段)傳送到正確的URL;
這句話結合上面那個HTTP請求報文的通用格式就可以解釋爲什麼“get傳送的數據量較小,不能大於2KB,而post傳送的數據量較大,一般被默認爲不受限制”;
至於安全性的問題,是因爲get方法將數據直接附在URL的後面,自然安全係數低,而post方法將數據封裝在報文實體中,而報文的傳遞會有加密等方法來保證其安全性,所以其安全性自然很高。