GET/POST區別


a) 參數:

  GET傳遞的參數只能帶URL后面,文本格式QueryString,各瀏覽器一般有長度限制,一般認為是2083,如果有中文字符更短。提交到服務器端的數據量小。

 POST可以傳遞application/x-www-form-urlencoded的類似QueryString、multipart/form-data的二進制報文格式(支持文件信息嵌入報文傳輸)、純文本或二進制的body參數。提交到服務器端的數據量大。參考:http://blog.csdn.net/kimmking/article/details/2051169

b) 用途:

 GET用於從服務器端獲取數據,包括靜態資源(HTML|JS|CSS|Image等等)、動態數據展示(列表數據、詳情數據等等)。

  POST用於向服務器提交數據,比如增刪改數據,提交一個表單新建一個用戶、或修改一個用戶等。

c) 緩存:

  GET時默認可以復用前面的請求數據作為緩存結果返回,此時以完整的URL作為緩存數據的KEY。所以有時候為了強制每次請求都是新數據,我們可以在URL后面加上一個隨機參數Math.random或時間戳new Date().getTime()、或版本號,比如abc.com?a=1&rnd=0.123987之類的。這也是目前一些靜態資源后面加一個很長的版本號的原因,jquery-min.js?v=13877770表示一個版本,當頁面引用jquery-min.js?v=13877771時瀏覽器必然會重新去服務器請求這個資源。jQuery.ajax方法,如果cache=false,則會在GET請求參數中附加”_={timestamp}”來禁用緩存。

 POST一般則不會被這些緩存因素影響。

d) 安全性:

 默認對於nginx的access log,會自動記錄get或post的完整URL,包括其中帶的參數。

 對於POST來說,請求的報文卻不會被記錄,這些對於敏感數據來說,POST更安全一些。

e) 自動化性能測試:

  基於上面提到的nginx日志,可以使用grep GET+日期,awk格式化,然后sort -u去重,從而提取到某天的所有GET請求URL,使用程序模擬登陸,然后請求所有URL即可獲取簡單的性能測試數據,每個請求是否正確,響應時間多少等等。

  但是對於POST請求,因為不知道報文,無法這樣簡單處理。可以通過nginx-lua獲取報文輸出到log,這樣格式化會麻煩很多,但不失為一個辦法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM