1.HTTP/1.0的會話方式:
建立連接,發(fā)送請求信息
-------------------------------------------------------------------------->
客戶機 服務(wù)器
<--------------------------------------------------------------------------
關(guān)閉連接,回送響應(yīng)消息
每次連接只處理一個請求,即使是對同一個網(wǎng)站的每一個頁面的訪問,瀏覽器和WEB服務(wù)器都要建立一次單獨的連接。
2.HTTP/1.1的會話方式:
建立連接,第1個請求信息
-------------------------------------------------------------------------->
............
發(fā)送第N請求信息
-------------------------------------------------------------------------->
客戶機 回送第1次響應(yīng) 服務(wù)器
<--------------------------------------------------------------------------
..............
回應(yīng)第n次響應(yīng)
<--------------------------------------------------------------------------
發(fā)送關(guān)閉連接請求
-------------------------------------------------------------------------->
關(guān)閉連接
<--------------------------------------------------------------------------
HTTP/1.1支持持久連接,在一個TCP連接上可以傳送多個HTTP請求和響應(yīng),減少了建立和關(guān)閉連接的消耗和延遲。一個包含有許多圖象的網(wǎng)頁文件的多個請求和響應(yīng)可以在一個連接中傳輸,但每個單獨的網(wǎng)頁文件的請求和響應(yīng)仍然需要使用各自的連接,還允許客戶端不用等待上一次請求結(jié)果返回就可以發(fā)送下一個請求。
HTTP消息的格式:
一個完整的請求消息包括:一個請求行、若干消息頭、以及實體內(nèi)容。
一個完整的響應(yīng)消息包括:一個狀態(tài)行、若干消息頭、以及實體內(nèi)容。
這在前面已經(jīng)有過簡單的介紹。下面對這幾個部分再做個詳細(xì)的解說:
1.請求行:包括三個部分,即請求方式、資源路徑、以及使用的HTTP協(xié)議版本。語法如下:請求方式 資源路徑 HTTP版本號<CRLF>,其中<CRLF>表示回車和換行這兩個字符的組合。HTTP請求方式包括POST、GET、HEAD、OPTIONS、DELETE、TRACE和PUT幾種。常用的是前兩種。
2.狀態(tài)行:包括HTTP協(xié)議的版本號、一個狀態(tài)碼、以及對狀態(tài)碼進(jìn)行描述的文本信息。
語法如下:HTTP版本號 狀態(tài)碼 原因敘述<CRLF>
使用GET和POST傳遞參數(shù):
在URL地址后面可以附加一些參數(shù),每個參數(shù)都由參數(shù)名和參數(shù)值組成,中間用=分隔,各個參數(shù)用&分隔,URL地址和整個參數(shù)之間用?分隔,如下所示:
http://www.it315.org/servlet/ParamsServlet?param1=aaa¶m2=bbb
使用GET傳遞參數(shù)的數(shù)據(jù)量是有限的,一般限制在1KB以下。使用POST比GET要大的多。是沒有限制的。但是必須設(shè)置Content=Type消息頭為‘application/x-www-form-urlencoded’和設(shè)置Content-Length消息頭為實體內(nèi)容的長度。
響應(yīng)狀態(tài)碼:
200:表示一切正常,返回的是正常請求結(jié)果。
404:表示服務(wù)器上不存在客戶機上所請求的資源,這個狀態(tài)碼在瀏覽網(wǎng)頁時最常見的。
通用信息頭:
Cache-Control:此字段用于通知客戶機和服務(wù)器之間的代理服務(wù)器如何使用已緩存的頁面。
Connection:用于指定處理完本次請求/響應(yīng)后,客戶端和服務(wù)器是否還要繼續(xù)保持連接。
Date:用于表示HTTP消息產(chǎn)生的當(dāng)前時間。
Transfer-Encoding:用于指定實體內(nèi)容的傳輸編碼方式。
請求頭:
Accept:用于指定客戶端程序能夠處理的MIME類型。有多個時用逗號隔開。
Accept-Charset:指出客戶端程序可以使用的字符集。有多個時用逗號隔開。
Accept-Encoding:指定客戶機能夠進(jìn)行解碼的數(shù)據(jù)編碼方式。有多個時用逗號隔開。
Accept-Language:指定客戶機期望服務(wù)器返回哪個國家語言的文檔。有多個時用逗號隔開。
Host:指定資源所在的主機名和端口號。
響應(yīng)頭:
Accept-Range:用于說明當(dāng)前WEB服務(wù)器是否接受Range請求和Range請求中指定的數(shù)據(jù)的單位。
Location:用于通知客戶機應(yīng)該到哪個新的地址去獲取文檔。由于當(dāng)前響應(yīng)并沒有直接返回內(nèi)容給客戶機,所以使用Location頭的HTTP消息不應(yīng)該有實體內(nèi)容,由此可見,在消息頭中不能同時出現(xiàn)Location和Contect-Type這兩個頭自段。
實體頭:
Allow:用于指定客戶機請求的資源所支持的請求方法。
Content-Encoding:用于指定實體內(nèi)容的壓縮編碼方式。
Content-Language:用于指定返回的網(wǎng)頁文檔的國家語言類型。
Content-Length:用于指定實體內(nèi)容的長度。
Content-Location:用于指定響應(yīng)消息中所封裝的實體內(nèi)容的實際位置路徑。
Content-Type:用于指定實體內(nèi)容的MIME類型。客戶機通過檢查服務(wù)器響應(yīng)消息的此字段中的MIME類型就能知道實體內(nèi)容的數(shù)據(jù)格式和知道以何種方式來進(jìn)行處理了。<Tomcat>安裝目錄下的conf目錄下的web.xml文件里面就定義了很多的類型。
Last-Modified:用于指定文檔的最后修改時間。
擴展頭:
Refresh:此字段告訴瀏覽器隔多長時間刷新。