get和post

導讀:大部分APP都依賴於網絡通訊,對於開發者來講,基於網絡通訊的開發無疑是必須掌握的。HTTP通訊做爲目前計算機主要的通訊協議,是企業面試當中必問的。對於HTTP通訊的概念,本文不做說明,我將在後續的文章中詳細介紹。本文主要講講熱點問題,就是HTTP網絡請求中GET和POST方法的區別。面試

1、區別

1.效率

  • GET的意思是『得』,從服務器獲取數據(也能夠上傳數據,參數就是),效率較高
  • POST的意思是『給』,但能夠向服務器發送數據和下載數據,效率不如GET

2.緩存

  • GET 請求可以被緩存,默認的請求方式也是有緩存的
  • POST請求默認不會緩存
  • 緩存是針對URL來進行緩存的,GET請求因爲其參數是直接加在URL上-的,一種參數組合就有一種URL的緩存,能夠根據參數來進行一一對應,重複請求是冪等的(不論請求多少次,結果都同樣);
  • 而POST請求的URL沒有參數,每次請求的URL都相同,數據體(HTTPBody)可能不一樣,沒法一一對應,因此緩存沒有意義

3.安全性

  • GET的全部參數所有包裝在URL中,明文顯示,且服務器的訪問日誌會記錄,很是不安全
  • POST的URL中只有資源路徑,不包含參數,參數封裝在二進制的數據體中,服務器也不會記錄參數,相對安全。全部涉及用戶隱私的數據都要用POST傳輸

POST的安全是相對的,對於普通用戶來講他們看不到明文,數據封裝對他們來講就是屏障。可是對於專業人士,它們會抓包會分析,沒有加密的數據包對他們來講也是小case。因此POST僅僅是相對安全,惟有對數據進行加密纔會更安全。固然加密也有被破解的可能性,理論上全部的加密方式均可以破解,只是時間長短的問題。而加密算法要作的就是使得破解須要的時間儘可能長,越長越安全。因爲咱們也須要解密,加密算法太過複雜也並不是好事,這就要結合使用狀況進行折中或者足夠實際使用便可。繞的有點遠,具體的話,我將在後續的文章之中介說起,並介紹一些經常使用的加密算法。算法

4.數據量

HTTP協議中均沒有對GET和POST請求的數據大小進行限制,可是實際應用中它們一般受限於軟硬件平臺的設計和性能。後端

  • GET:不一樣的瀏覽器和服務器不一樣,通常限制在2~8K之間,更加常見的是1k之內
  • POST方法提交的數據比較大,大小靠服務器的設定值限制,PHP默認是2M(具體的話你們之後看後端給的開發文檔就好了)


文/高海濱(簡書做者) 原文連接:http://www.jianshu.com/p/5e55a734e9a2 著做權歸做者全部,轉載請聯繫做者得到受權,並標註「簡書做者」。
相關文章
相關標籤/搜索