HTTP1.0定義了三種請求方法:GET魏身、POST和HEAD方法蟀淮;
HTTP1.1新增了五種請求方法:OPTION、PUT超凳、DELETE愈污、TRACE和CONNECT方法;
- GET 方法:僅用作數(shù)據(jù)的讀取轮傍,請求參數(shù)以query的形式附加
- POST 方法:向指定資源提交數(shù)據(jù)進行處理請求(例如提交表單或上傳文件)暂雹。數(shù)據(jù)被包含在請求體中。POST請求可能會創(chuàng)建新資源或修改現(xiàn)有資源创夜,請求參數(shù)以body的形式傳遞杭跪。
- HEAD 方法:類似于GET請求,但是只請求頁面的首部挥下、不請求頁面內(nèi)容揍魂。它允許我們單純獲取服務(wù)器的響應(yīng)頭信息。
- PUT 方法:PUT 在能力上和 POST 類似棚瘟,區(qū)別在于 PUT 的 URI 指向是具體的某個資源,而不能指向資源集合喜最。從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容偎蘸。同時 PUT 對資源的修改是冪等的。
- DELETE方法:請求服務(wù)器刪除指定的資源
- OPTIONS方法:用于獲取指定服務(wù)能夠支持的通信選項,允許客戶端查看服務(wù)器的性能迷雪。
- CONNECT方法:HTTP/1.1協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器限书。
- TRACE方法:回顯服務(wù)器收到的請求,主要用于測試或診斷章咧。
與 POST 相比倦西,GET 更簡單也更快,并且在大部分情況下都能用赁严。
如下情況則須使用POST方式:
? 無法使用緩存文件(更新服務(wù)器上的文件或數(shù)據(jù)庫)
?向服務(wù)器發(fā)送大量數(shù)據(jù)(POST 沒有數(shù)據(jù)量限制)
? 發(fā)送包含未知字符的用戶輸入時扰柠,POST 比 GET 更穩(wěn)定也更可靠
HTML標(biāo)準(zhǔn)中對HTTP協(xié)議的用法的約定
GET
- 用于獲取數(shù)據(jù)。
- 使用URL或Cookie傳參疼约。(會將參數(shù)追加到URL后面)
- GET提交的數(shù)據(jù)大小有限制(因為瀏覽器對URL的長度有限制)
使用GET請求經(jīng)常會發(fā)生的一個錯誤卤档,就是查詢字符串的格式有問題.查詢字符串中每個參數(shù)的名稱和值都必須使用encodeURIComponent()進行編碼,然后才能放到URL的末尾程剥;而且所有名-值對都必須使用&分隔.
xhr.open("get","example.php?name1=value1&name2=value2",true);
http://localhost:8080/EcommerceSiteLM/user/register.do?username=liumin&password=123456
輔助向現(xiàn)有的URL的末尾添加查詢字符串參數(shù)
function addURLParam(url,name,value){
url += (url.indexOf("?") == -1 ? "?" : "&");
url += encodeURIComponent(name) + "=" + encodeURIComponent(value);
return url;
}
POST
- 一般用于將數(shù)據(jù)發(fā)給服務(wù)器劝枣。
- 將數(shù)據(jù)放在Body中。
- POST的數(shù)據(jù)可以非常大织鲸。
- 更安全舔腾,因為數(shù)據(jù)在地址欄上不可見。
get是把參數(shù)數(shù)據(jù)隊列加到提交表單的action屬性所指的URL中搂擦,值和表單內(nèi)各個字段一一對應(yīng)稳诚,在URL中可以看到。post是通過HTTP post機制盾饮,將表單內(nèi)各個字段與其內(nèi)容放置在HTML header內(nèi)一起傳送到action屬性所指的URL地址采桃,用戶看不到這個過程。
URL的構(gòu)造規(guī)則(GET帶參情況下) 獲取參數(shù)以JSON顯示(編寫function)
GET和POST對比圖