根據(jù)HTTP標(biāo)準(zhǔn),HTTP請(qǐng)求可以使用多種請(qǐng)求方法。
- HTTP1.0定義了三種請(qǐng)求方法: GET, POST 和 HEAD方法。
- HTTP1.1新增了五種請(qǐng)求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
所以,HTTP 協(xié)議共定義了八種方法或者叫“動(dòng)作”來(lái)表明對(duì) Request-URI 指定的資源的不同操作方式,具體介紹如下:
- OPTIONS:返回服務(wù)器針對(duì)特定資源所支持的HTTP請(qǐng)求方法。也可以利用向Web服務(wù)器發(fā)送'*'的請(qǐng)求來(lái)測(cè)試服務(wù)器的功能性。
- HEAD:向服務(wù)器索要與GET請(qǐng)求相一致的響應(yīng),只不過(guò)響應(yīng)體將不會(huì)被返回。這一方法可以在不必傳輸整個(gè)響應(yīng)內(nèi)容的情況下,就可以獲取包含在響應(yīng)消息頭中的元信息。
- GET:向特定的資源發(fā)出請(qǐng)求。
- POST:向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST請(qǐng)求可能會(huì)導(dǎo)致新的資源的創(chuàng)建和/或已有資源的修改。
- PUT:向指定資源位置上傳其最新內(nèi)容。
- DELETE:請(qǐng)求服務(wù)器刪除 Request-URI 所標(biāo)識(shí)的資源。
- TRACE:回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷。
- CONNECT:HTTP/1.1 協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。
雖然 HTTP 的請(qǐng)求方式有 8 種,但是我們?cè)趯?shí)際應(yīng)用中常用的也就是 get 和 post,其他請(qǐng)求方式也都可以通過(guò)這兩種方式間接的來(lái)實(shí)現(xiàn)。
GET和POST請(qǐng)求的區(qū)別
- GET提交的數(shù)據(jù)會(huì)放在URL之后,以?分割URL和傳輸數(shù)據(jù),參數(shù)之間以&相連,如
EditPosts.aspx?name=test1&id=123456(如果數(shù)據(jù)是英文字母/數(shù)字,原樣發(fā)送,如果是空格,轉(zhuǎn)換為+,如果是中文/其他字符,則直接把字符串用BASE64加密); POST方法是把提交的數(shù)據(jù)放在HTTP包的Body中. - GET提交的數(shù)據(jù)大小有限制(因?yàn)闉g覽器對(duì)URL的長(zhǎng)度有限制),而POST方法提交的數(shù)據(jù)沒(méi)有限制;例如 IE對(duì)URL長(zhǎng)度的限制是2083字節(jié)(2K+35)
- GET方式需要使用Request.QueryString來(lái)取得變量的值,而POST方式通過(guò)Request.Form來(lái)獲取變量的值。
- GET方式提交數(shù)據(jù),會(huì)帶來(lái)安全問(wèn)題,比如一個(gè)登錄頁(yè)面,通過(guò)GET方式提交數(shù)據(jù)時(shí),用戶名和密碼將出現(xiàn)在URL上,如果頁(yè)面可以被緩存或者其他人可以訪問(wèn)這臺(tái)機(jī)器,就可以從歷史記錄獲得該用戶的賬號(hào)和密碼.