資源描述:
《深入理解http消息頭》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、深入理解HTTP消息頭.txt52每個人都一條拋物線,天賦決定其開口,而最高點則需后天的努力。沒有秋日落葉的飄零,何來新春綠芽的餓明麗?只有懂得失去,才會重新?lián)碛?。深入理解HTTP消息頭轉(zhuǎn)載自:[http://www.php-oa.com](一)初識HTTP消息頭但凡搞WEB開發(fā)的人都離不開HTTP(超文本傳輸協(xié)議),而要了解HTTP,除了HTML本身以外,還有一部分不可忽視的就是HTTP消息頭。做過Socket編程的人都知道,當我們設(shè)計一個通信協(xié)議時,“消息頭/消息體”的分割方式是很常用的,消息頭
2、告訴對方這個消息是干什么的,消息體告訴對方怎么干。HTTP傳輸?shù)南⒁彩沁@樣規(guī)定的,每一個HTTP包都分為HTTP頭和HTTP體兩部分,后者是可選的,而前者是必須的。每當我們打開一個網(wǎng)頁,在上面點擊右鍵,選擇“查看源文件”,這時看到的HTML代碼就是HTTP的消息體,那么消息頭又在哪呢?IE瀏覽器不讓我們看到這部分,但我們可以通過截取數(shù)據(jù)包等方法看到它。下面就來看一個簡單的例子:首先制作一個非常簡單的網(wǎng)頁,它的內(nèi)容只有一行:
helloworld把它
3、放到WEB服務(wù)器上,比如IIS,然后用IE瀏覽器請求這個頁面(http://localhost:8080/simple.htm),當我們請求這個頁面時,瀏覽器實際做了以下四項工作:1解析我們輸入的地址,從中分解出協(xié)議名、主機名、端口、對象路徑等部分,對于我們的這個地址,解析得到的結(jié)果如下:協(xié)議名:http主機名:localhost端口:8080對象路徑:/simple.htm2把以上部分結(jié)合本機自己的信息,封裝成一個HTTP請求數(shù)據(jù)包3使用TCP協(xié)議連接到主機的指定端口(localhost,8080
4、),并發(fā)送已封裝好的數(shù)據(jù)包4等待服務(wù)器返回數(shù)據(jù),并解析返回數(shù)據(jù),最后顯示出來由截取到的數(shù)據(jù)包我們不難發(fā)現(xiàn)瀏覽器生成的HTTP數(shù)據(jù)包的內(nèi)容如下:GET/simple.htmHTTP/1.1Accept:image/gif,image/x-xbitmap,image/jpeg,image/pjpeg,application/x-shockwave-flash,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/ms
5、word,*/*Accept-Language:zh-cnAccept-Encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;.NETCLR1.1.4322;.NETCLR2.0.50727)Host:localhost:8080Connection:Keep-Alive為了顯示清楚我把所有的回車的地方都加上了“”,注意最后還有一個
6、空行加一個回車,這個空行正是HTTP規(guī)定的消息頭和消息體的分界線,第一個空行以下的內(nèi)容就是消息體,這個請求數(shù)據(jù)包是沒有消息體的。消息的第一行“GET”表示我們所使用的HTTP動作,其他可能的還有“POST”頁腳等,GET的消息沒有消息體,而POST消息是有消息體的,消息體的內(nèi)容就是要POST的數(shù)據(jù)。后面/simple.htm就是我們要請求的對象,之后HTTP1.1表示使用的是HTTP1.1協(xié)議。第二行表示我們所用的瀏覽器能接受的Content-type,三四兩行則是語言和編碼信息,第五行顯示出本機的
7、相關(guān)系信息,包括瀏覽器類型、操作系統(tǒng)信息等,很多網(wǎng)站可以顯示出你所使用的瀏覽器和操作系統(tǒng)版本,就是因為可以從這里獲取到這些信息。第六行表示我們所請求的主機和端口,第七行表示使用Keep-Alive方式,即數(shù)據(jù)傳遞完并不立即關(guān)閉連接。服務(wù)器接收到這樣的數(shù)據(jù)包以后會根據(jù)其內(nèi)容做相應(yīng)的處理,例如查找有沒有“/simple.htm”這個對象,如果有,根據(jù)服務(wù)器的設(shè)置來決定如何處理,如果是HTM,則不需要什么復(fù)雜的處理,直接返回其內(nèi)容即可。但在直接返回之前,還需要加上HTTP消息頭。服務(wù)器發(fā)回的完整HTTP消
8、息如下:HTTP/1.1200OKServer:Microsoft-IIS/5.1X-Powered-By:ASP.NETDate:Fri,03Mar200606:34:03GMTContent-Type:text/htmlAccept-Ranges:bytesLast-Modified:Fri,03Mar200606:33:18GMTETag:"5ca4f75b8c3ec61:9ee"Content-L