總結:GET與POST請求方法有什麼區別

發現很多前端小夥伴的簡歷當中都寫有這麼一句:瞭解http協議。其實大可不必,因爲http是前端基礎中的基礎。這就相當於一位廚師的簡歷中寫着:熟練使用炊具。

既然簡歷中出現這個知識點,那麼緊隨而來的便是面試官的提問:get與post方法有什麼區別呢?

大部分面試者都只會從單詞字面上回答:get是從服務器獲取數據,而post是向服務器傳送數據。

很顯然上面的回答是無法讓面試官信服的,下面是我對這兩種請求方法的一些總結:

首先get和post都是http請求的方法。而http又是基於TCP/IP的應用層通信協議。所以本質上來說get和post請求是沒有區別的,都是TCP鏈接。他們能做的事情也都是一樣的(與服務器進行交互)。換言之:get能做的事,post也可以做,反之亦可!

http協議提供這兩種方法,也是在特定的情況下區分應用:

1、參數位置:get請求的參數是放在url(query)裏面的。而POST請求的參數是放置在請求體(content)裏面的。當然post請求也是可以放置在url當中的。

2、瀏覽器緩存:get請求可以被瀏覽器緩存,而post請求不能被緩存。

3、參數長度:get請求參數由於是在url裏面,所以會受到瀏覽器的長度限制,瀏覽器的不同長度的數值也不同,比如IE是2083字節。理論上講,POST是沒有大小限制的。因爲HTTP協議規範沒有進行大小限制。

4、參數安全性:同樣是因爲get的請求參數放置在url裏,所以可見,再加上會被瀏覽器緩存,所以安全性比較差。post請求的參數是放置在請求體裏,且不會被緩存,所以安全性相對就好一些。

5、瀏覽器訪問:get請求可以通過瀏覽器直接訪問,支持刷新和後退。post請求是不能被瀏覽器直接訪問的,刷新後數據會重新傳送。

6、RESTful架構:在該架構中get扮演獲取數據的角色,而post扮演的是添加數據的角色。所以get對數據是無害的,不會對數據資源造成影響。而post使用不當,有可能對原有數據資源造成傷害。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章