HTTP請求數(shù)據(jù):

HTTP請求信息由3部分組成:
① 請求方法 URI 協(xié)議/版本
② 請求頭(Request Header)
③ 請求正文
HTTP 請求 數(shù)據(jù) 例子舉例:
GET/sample.Jsp HTTP/1.1Accept:image/gif.image/jpeg,/Accept-Language:zh-cnConnection:Keep-AliveHost:localhostUser-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é)議的版本。
根據(jù)HTTP標準,HTTP請求可以使用多種請求方法。例如:HTTP1.1支持7種請求方法:GET、POST、HEAD、OPTIONS、 PUT、DELETE和TARCE。在Internet應(yīng)用中,最常用的方法是GET和POST。
URL完整地指定了要訪問的網(wǎng)絡(luò)資源,通常只要給出相對于服務(wù)器的根目錄的相對目錄即可,因此總是以“/”開頭,最后,協(xié)議版本 聲明了通信過程中使用HTTP的版本。
(2)請求頭(Request Header)
請求頭包含許多有關(guān)的客戶端環(huán)境和請求正文的有用信息。例如,請求頭可以聲明瀏覽器所用的語言,請求正文的長度等。
Accept:image/gif.image/jpeg.*/*Accept-Language:zh-cnConnection:Keep-AliveHost:localhostUser-Agent:Mozila/4.0(compatible:MSIE5.01:Windows NT5.0)Accept-Encoding:gzip,deflate.
(3)請求正文
請求頭和請求正文之間是一個空行,這個行非常重要,它表示請求頭已經(jīng)結(jié)束,接下來的是請求正文。請求正文中可以包含客戶提 交的查詢字符串信息:
username=jinqiao&password=1234
Http請求方法:
GET 請求獲取由 Request-URI 所標識的資源。
POST 在 Request-URI 所標識的資源后附加新的數(shù)據(jù)。
HEAD 請求獲取由 Request-URI 所標識的資源的響應(yīng)消息報頭。
OPTIONS 請求查詢服務(wù)器的性能,或查詢與資源相關(guān)的選項和需求。
PUT 請求服務(wù)器存儲一個資源,并用 Request-URI 作為其標識。
DELETE 請求服務(wù)器刪除由 Request-URI 所標識的資源。
TRACE 請求服務(wù)器回送收到的請求信息,主要用語測試或診斷。
HTTP響應(yīng)數(shù)據(jù):

Response Headers

Cache-Control:
must-revalidate, no-cache, private。這個值告訴客戶端,服務(wù)端不希望客戶端緩存資源,在下次請求資源時,必須要從新請求服務(wù)器,不能從緩存副本中獲取資源。 Cache-Control是響應(yīng)頭中很重要的信息,當客戶端請求頭中包含Cache-Control:max-age=0請求,明確表示不會緩存服務(wù)器資源時,Cache-Control作為作為回應(yīng)信息,通常會返回no-cache,意思就是說,“不緩存就不緩存唄”;當客戶端在請求頭中沒有包含Cache-Control時,服務(wù)端往往會定,不同的資源不同的緩存策略,比如說oschina在緩存圖片資源的策略就是Cache-Control:max-age=86400,這個意思是,從當前時間開始,在86400秒的時間內(nèi),客戶端可以直接從緩存副本中讀取資源,而不需要向服務(wù)器請求。
Connection:
keep-alive,
這個字段作為回應(yīng)客戶端的Connection:keep-alive,告訴客戶端服務(wù)器的tcp連接也是一個長連接,客戶端可以繼續(xù)使用這個tcp連接發(fā)送http請求。關(guān)于長連接的更多知識,后面我再詳細講。
Content-Encoding:
gzip
告訴客戶端,服務(wù)端發(fā)送的資源是采用gzip編碼的,客戶端看到這個信息后,應(yīng)該采用gzip對資源進行解碼。
Content-Type:
text/html;charset=UTF-8
告訴客戶端,資源文件的類型,還有字符編碼,客戶端通過utf-8對資源進行解碼,然后對資源進行html解析。通常我們會看到有些網(wǎng)站是亂碼的,往往就是服務(wù)器端沒有返回正確的編碼。
Date:
Sun, 21 Sep 2014 06:18:21 GMT
這個是服務(wù)端發(fā)送資源時的服務(wù)器時間,剛開始我不知道GMT是格林尼治所在地的標準時間,以為是服務(wù)器的時間錯了,還去服務(wù)器上查看過時間。http協(xié)議中發(fā)送的時間都是GMT的,這主要是解決在互聯(lián)網(wǎng)上,不同時區(qū)在相互請求資源的時候,時間混亂問題。
Expires:
Sun, 1 Jan 2000 01:00:00 GMT
這個響應(yīng)頭也是跟緩存有關(guān)的,告訴客戶端在這個時間前,可以直接訪問緩存副本,很顯然這個值會存在問題,因為客戶端和服務(wù)器的時間不一定會都是相同的,如果時間不同就會導(dǎo)致問題。所以這個響應(yīng)頭是沒有Cache-Control:max-age=***這個響應(yīng)頭準確的,因為max-age=date中的date是個相對時間,不僅更好理解,也更準確。
Pragma:no-cache
這個含義與Cache-Control等同。
Server:
Tengine/1.4.6
這個是服務(wù)器和相對應(yīng)的版本,只是告訴客戶端服務(wù)器信息,沒有更多的意思。
Transfer-Encoding:
chunked
這個響應(yīng)頭告訴客戶端,服務(wù)器發(fā)送的資源的方式是分塊發(fā)送的。一般分塊發(fā)送的資源都是服務(wù)器動態(tài)生成的,在發(fā)送時還不知道發(fā)送資源的大小,所以采用分塊發(fā)送,每一塊都是獨立的,獨立的塊都能標示自己的長度,最后一塊是0長度的,當客戶端讀到這個0長度的塊時,就可以確定資源已經(jīng)傳輸完了。
Vary:
Accept-Encoding
告訴緩存服務(wù)器,緩存壓縮文件和非壓縮文件兩個版本,現(xiàn)在這個字段用處并不大,因為現(xiàn)在的瀏覽器都是支持壓縮的。