nginx会将post请求转为get么_前端角度谈GET与POST的区别
GET與POST
參數:
GET傳遞的參數只能帶URL后面,文本格式QueryString,各瀏覽器一般有長度限制,一般認為是2083,如果有中文字符更短。提交到服務器端的數據量小。參考:
https://www.XXX.com.cn/blog/20201021.htmlPOST可以傳遞 application/x-www-form-urlencoded 的類似 QueryString、multipart/form-data 的二進制報文格式(支持文件信息嵌入報文傳輸)、純文本或二進制的body參數。提交到服務器端的數據量大。
用途:
GET用于從服務器端獲取數據,包括靜態資源(HTML|JS|CSS|Image等等)、動態數據展示(列表數據、詳情數據等等)。
POST用于向服務器提交數據,比如增刪改數據,提交一個表單新建一個用戶、或修改一個用戶等。
緩存:
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一般則不會被這些緩存因素影響。
安全性:
默認對于nginx的access log,會自動記錄get或post的完整URL,包括其中帶的參數。
對于POST來說,請求的報文卻不會被記錄,這些對于敏感數據來說,POST更安全一些。
自動化性能測試:
基于上面提到的nginx日志,可以使用grep GET+日期,awk格式化,然后sort -u去重,從而提取到某天的所有GET請求URL,使用程序模擬登陸,然后請求所有URL即可獲取簡單的性能測試數據,每個請求是否正確,響應時間多少等等。
但是對于POST請求,因為不知道報文,無法這樣簡單處理??梢酝ㄟ^nginx-lua獲取報文輸出到log,這樣格式化會麻煩很多,但不失為一個辦法。
其它
HEAD:獲得報文首部
HEAD方法和GET方法一樣,知識不返回豹紋的主體部分,用于確認URI的有效性及資源更新的日期時間等。
? ?具體來說:1、判斷類型;2、查看響應中的狀態碼,看對象是否存在(響應:請求執行成功了,但無數據返回);3、測試資源是否被修改過
? ?HEAD方法和GET方法的區別:GET方法有實體,HEAD方法無實體。
PUT:傳輸文件
PUT方法用來傳輸文件,就像FTP協議的文件上傳一樣,要求在請求報文的主體中包含文件內容,然后保存在請求URI指定的位置。但是HTTP/1.1的PUT方法自身不帶驗證機制,任何人都可以上傳文件,存在安全問題,故一般不用。
DELETE:刪除文件
指明客戶端想讓服務器刪除某個資源,與PUT方法相反,按URI刪除指定資源
OPTIONS:詢問支持的方法
OPTIONS方法用來查詢針對請求URI指定資源支持的方法(客戶端詢問服務器可以提交哪些請求方法)
TRACE:追蹤路徑
客戶端可以對請求消息的傳輸路徑進行追蹤,TRACE方法是讓Web服務器端將之前的請求通信還給客戶端的方法
CONNECT:要求用隧道協議連接代理
CONNECT方法要求在與代理服務器通信時建立隧道,實現用隧道協議進行TCP通信。主要使用SSL(安全套接層)和TLS(傳輸層安全)協議把通信內容加密后經網絡隧道傳輸。
總結
以上是生活随笔為你收集整理的nginx会将post请求转为get么_前端角度谈GET与POST的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux数码管和点阵程序,随笔:pyt
- 下一篇: 子类怎么继承父类方法中的变量_JavaO