HTTP請求包括三部分:請求行(Request Line),頭部(Headers)和數(shù)據(jù)體(Body)。其中,請求行由請求方法(method),請求網(wǎng)址Request-URI和協(xié)議 (Protocol)構(gòu)成,而請求頭包括多個屬性,數(shù)據(jù)體則可以被認(rèn)為是附加在請求之后的文本或二進(jìn)制文件。
下面這個例子顯示了一個HTTP請求的Header內(nèi)容,這些數(shù)據(jù)是真正以網(wǎng)絡(luò)HTTP協(xié)議從IE瀏覽器傳遞到Apache服務(wù)器上的。
GET /icwork/? search=product HTTP/1.1
Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/vnd.ms-powerpoint,application/vnd.ms-excel,application/msword,*.*
Accept-Language:en-us
Accept-Encoding:gzip,deflate
User-Agent:Mozilla/4.0(compatible;MSIE 5.01;Windows NT 5.0;DigExt)
Host:www.icconcept.com:8080
Referer:http://www.yoursite.com/header.html
Connection:Keep-Alive
這段程序使用了6個Header,還有一些Header沒有出現(xiàn)。我們參考這個例子具體解釋HTTP請求格式。
1.HTTP請求行:請求行格式為Method Request-URI Protocol。在上面這個例子里,“GET /icwork/? search=pruduct HTTP/1.1”是請求行。
2.Accept:指瀏覽器或其他客戶可以接愛的MIME文件格式。Servlet可以根據(jù)它判斷并返回適當(dāng)?shù)奈募袷健?/p>
3.Accept-Charset:指出瀏覽器可以接受的字符編碼。英文瀏覽器的默認(rèn)值是ISO-8859-1.
4.Accept-Language:指出瀏覽器可以接受的語言種類,如en或en-us,指英語。
5.Accept-Encoding:指出瀏覽器可以接受的編碼方式。編碼方式不同于文件格式,它是為了壓縮文件并加速文件傳遞速度。瀏覽器在接收到Web響應(yīng)之后先解碼,然后再檢查文件格式。
6.Authorization:當(dāng)使用密碼機(jī)制時用來標(biāo)識瀏覽器。
7.Cache-Control:設(shè)置關(guān)于請求被代理服務(wù)器存儲的相關(guān)選項(xiàng)。一般servlet用不到。
8.Connection:用來告訴服務(wù)器是否可以維持固定的HTTP連接。HTTP/1.1使用Keep-Alive為默認(rèn)值,這樣,當(dāng)瀏覽器需要多個文件時(比如一個HTML文件和相關(guān)的圖形文件),不需要每次都建立連接。
9.Content-Type:用來表名request的內(nèi)容類型。可以用HttpServletRequest的getContentType()方法取得。
10.Cookie:瀏覽器用這個屬性向服務(wù)器發(fā)送Cookie。Cookie是在瀏覽器中寄存的小型數(shù)據(jù)體,它可以記載和服務(wù)器相關(guān)的用戶信息,也可以用來實(shí)現(xiàn)會話功能。
11.Expect:表時客戶預(yù)期的響應(yīng)狀態(tài)。
12.From:給出客戶端HTTP請求負(fù)責(zé)人的email地址。
13.Host:對應(yīng)網(wǎng)址URL中的Web名稱和端口號。
14.If-Match:供PUT方法使用。
15.If-Modified-Since:客戶使用這個屬性表明它只需要在指定日期之后更改過的網(wǎng)頁。因?yàn)闉g覽器可以使用其存儲的文件而不必從服務(wù)器請求,這樣節(jié)省了Web資源。由于Servlet是動態(tài)生成的網(wǎng)頁,一般不需要使用這個屬性。
16.If-None-Match:和If-Match相反的操作,供PUT方法使用。
17.If-Unmodified-Since:和If-Match-Since相反。
18.Pragma:這個屬性只有一種值,即Pragma:no-cache,表明如果servlet充當(dāng)代理服務(wù)器,即使其有已經(jīng)存儲的網(wǎng)頁,也要將請求傳遞給目的服務(wù)器。
19.Proxy-Authorization:代理服務(wù)器使用這個屬性,Servlet一般用不到。
20.Range:如果客戶有部分網(wǎng)頁,這個屬性可以請求剩余部分。
21.Referer:表明產(chǎn)生請求的網(wǎng)頁URL。如比從網(wǎng)頁/icconcept/index.jsp中點(diǎn)擊一個鏈接到網(wǎng)頁/icwork/search,在向服務(wù)器發(fā)送的GET/icwork/search中的請求中,Referer是http://hostname:8080/icconcept/index.php。這個屬性可以用來跟蹤Web請求是從什么網(wǎng)站來的。
22.Upgrage:客戶通過這個屬性設(shè)定可以使用與HTTP/1.1不同的協(xié)議。
23.User-Agent:是客戶瀏覽器名稱。
24.Via:用來記錄Web請求經(jīng)過的代理服務(wù)器或Web通道。
25.Warning:用來由客戶聲明傳遞或存儲(cache)錯誤。