今天從以下五個角度分析
來自愛寫思維導圖的辰兮同學
1)請求形式
①Get舉例子來說吧:
url : “http://www.imooc.com?a=1&b=2&c=3” 這個地址,問號之後的稱爲參數。我們可以看出:有3個參數,a,b,c.它們的值分別是1,2,3你已經想到了,&就是“和”的意思。我們不經常也這麼說:“我&你”
參數是傳給後臺取值的,?是解析的時候開始點,&是連接參數的符號
總結:URL結構:協議://域名 or IP地址:端口號/目錄/文件名.文件名後綴?參數=值
②Post請求
Post請求包含兩部分:請求頭(header)和請求體(body)。
詳細具體可查 post如何傳輸數據
2)傳輸數據的大小
①GET請求:
在HTTP規範中,沒有對URL的長度和傳輸的數據大小進行限制。但是在實際開發過程中,對於GET,特定的瀏覽器和服務器對URL的長度有限制。因此,在使用GET請求時,傳輸數據會受到URL長度的限制,一般傳送的數據量不超過2KB
②POST請求
由於不是URL傳值,理論上是不會受限制的,但是實際上各個服務器會規定對POST提交數據大小進行限制,Apache、IIS都有各自的配置。
總結:GET的URL會有長度上的限制,則POST的數據則可以非常大。
3)安全性
①GET請求:
傳輸的參數安全性低,因爲傳輸的數據會顯示在URL中,所有人都是可見的,並且會被緩存和保留在瀏覽器歷史中
②POST請求
數據存放在請求包中進行傳輸,不會顯示在 URL 中,並且參數不會被緩存和保存在瀏覽器歷史或 web 服務器日誌中
總結:POST比GET安全
4)傳輸數據的類型
①GET請求:
只允許 ASCII 字符
②POST請求
支持多種數據類型
5)對服務器的影響
①GET請求:
從服務器上獲取數據,也就是所謂的查,僅僅是獲取服務器資源,不進行修改。
②POST請求
向服務器提交數據,這就涉及到了數據的更新,也就是更改服務器的數據。
thanks for your reading
既然post有這麼多優點,那我們爲什麼要使用get?
因爲get比post更快
1)post請求的過程,會先將請求頭髮送給服務器進行確認,然後才真正發送數據;而get請求的過程,會在連接建立後會將請求頭和請求數據一起發送
2)get會將數據緩存起來,而post不會
可以做個簡短的測試,使用ajax採用get方式請求靜態數據(比如html頁面,圖片)的時候,如果兩次傳輸的數據相同,第二次以後耗費的時間將在10ms以內(chrome測試),而post每次耗費的時間都差不多
3)post不能進行管道化傳輸
所以具體的使用根據實際情況而定,使用get請求通信的時候這樣用戶體驗會更好,當然,如果有安全性要求的話,post會更好。