一、HTTP請求格式
當瀏覽器向Web服務(wù)器發(fā)出請求時(shí),它向服務(wù)器傳遞了一個(gè)數據塊,也就是請求信息,HTTP請求信息由3部分組成:
① 請求方法 URI 協(xié)議/版本
② 請求頭(Request Header)
③ 請求正文
下面是一個(gè)HTTP請求的例子:
GET/sample.Jsp HTTP/1.1
Accept:image/gif.image/jpeg,*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
Accept-Encoding:gzip,deflate
username=jinqiao&password=1234
(1)請求方法URI協(xié)議/版本
請求的第一行是“方法URL協(xié)議版本”:GET/sample.jsp HTTP/1.1
以上代碼中“GET”代表請求方法,“/sample.jsp”表示URI,“HTTP/1.1代表協(xié)議和協(xié)議的版本。
根據HTTP標準,HTTP請求可以使用多種請求方法。例如:HTTP1.1支持7種請求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE和TARCE。在Internet應用中,最常用的方法是GET和POST。
URL完整地指定了要訪(fǎng)問(wèn)的網(wǎng)絡(luò )資源,通常只要給出相對于服務(wù)器的根目錄的相對目錄即可,因此總是以“/”開(kāi)頭,最后,協(xié)議版本聲明了通信過(guò)程中使用HTTP的版本。
(2)請求頭(Request Header)
請求頭包含許多有關(guān)的客戶(hù)端環(huán)境和請求正文的有用信息。例如,請求頭可以聲明瀏覽器所用的語(yǔ)言,請求正文的長(cháng)度等。
Accept:image/gif.image/jpeg.*/*
Accept-Language:zh-cn
Connection:Keep-Alive
Host:localhost
User-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)
Accept-Encoding:gzip,deflate.
(3) 請求正文
請求頭和請求正文之間是一個(gè)空行,這個(gè)行非常重要,它表示請求頭已經(jīng)結束,接下來(lái)的是請求正文。請求正文中可以包含客戶(hù)提交的查詢(xún)字符串信息:
username=jinqiao&password=1234
在以上的例子的HTTP請求中,請求的正文只有一行內容。當然,在實(shí)際應用中,HTTP請求正文可以包含更多的內容。
四、HTTP請求方法:GET POST
1)GET方法
GET方法是默認的HTTP請求方法,我們日常用GET方法來(lái)提交表單數據,然而用GET方法提交的表單數據只經(jīng)過(guò)了簡(jiǎn)單的編碼,同時(shí)它將作為URL的一部分向Web服務(wù)器發(fā)送,因此,如果使用GET方法來(lái)提交表單數據就存在著(zhù)安全隱患上。例如
Http://127.0.0.1/login.jsp?Name=zhangshi&Age=30&Submit=%cc%E+%BD%BB
從上面的URL請求中,很容易就可以辯認出表單提交的內容。(?之后的內容)另外由于GET方法提交的數據是作為URL請求的一部分所以提交的數據量不能太大
2)POST方法
POST方法是GET方法的一個(gè)替代方法,它主要是向Web服務(wù)器提交表單數據,尤其是大批量的數據。POST方法克服了GET方法的一些缺點(diǎn)。通過(guò)POST方法提交表單數據時(shí),數據不是作為URL請求的一部分而是作為標準數據傳送給Web服務(wù)器,這就克服了GET方法中的信息無(wú)法保密和數據量太小的缺點(diǎn)。因此,出于安全的考慮以及對用戶(hù)隱私的尊重,通常表單提交時(shí)采用POST方法。
從編程的角度來(lái)講,如果用戶(hù)通過(guò)GET方法提交數據,則數據存放在QUERY_STRING環(huán)境變量中,而POST方法提交的數據則可以從標準輸入流中獲取。
方法 | 描述 |
GET | 對服務(wù)器資源的簡(jiǎn)單請求 |
HEAD | 類(lèi)似于get請求,只不過(guò)返回的響應中沒(méi)有具體的內容,用于獲取報頭 |
POST | 用于發(fā)送包含用戶(hù)提交數據的請求 |
PUT | 傳說(shuō)當前請求文檔的一個(gè)版本 |
DELETE | 發(fā)送一個(gè)用來(lái)刪除指定文檔的請求 |
TRACE | 發(fā)送請求的一個(gè)副本,以跟蹤其處理進(jìn)程 |
OPTIONS | 返回所有可用的方法;可檢查服務(wù)器支持哪些方法 |
CONNECT | 用于ssl隧道的基于代理的請求 |
聯(lián)系客服