request獲取請求參數
最為常見的客戶端傳遞參數方式有兩種:
瀏覽器地址欄直接輸入:一定是GET請求;
超鏈接:一定是GET請求;
表單:可以是GET,也可以是POST,這取決與<form>的method屬性值;
GET請求和POST請求的區別:
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(具體的話大家以后看后端給的開發文檔就行了)