国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

HTTP消息頭字段深入介紹

2024-07-21 02:04:33
字體:
來源:轉載
供稿:網友
 

一、通用頭字段

 

1. connection

 

這個字段只在http1.1協議中存在。它決定了客戶端和服務器進行了一次會話后,服務器是否立即關閉網絡連接。在客戶端最直接的表現是使用read方法(readline方法也是一樣)讀完客戶端請求的web資源后,是否立即返回-1(readline返回null)。connection有兩個值:close和keep-alive.當使用connection:close時,和http1.0協議是一樣的,當read方法讀完數據時立即返回;而使用connection:keep-alive時,read方法在讀完數據后還要被阻塞一段時間。直接讀取數據超時時間過后,還繼續往下執行。在上一篇文章中討論的readhttpresponse(……)方法實現的第011行可以驗證connection的作用。下面讓我們來使用http模擬器來做一個實驗。

 

(1)在http模擬器中輸入如下的域名:

 

www.baidu.com

 

(2)http模擬器中輸入如下的http請求信息:

 

get / http/1.1   host: www.baidu.com

 

(3)按兩下回車(輸入一個空行)后,發送請求消息,并得到如圖1如示的http響應消息頭:

 

 

 

圖1

(4)輸入y或y后(在顯示http響應頭后,要立刻輸入y或y),顯示響應消息的內容。在顯示完內容后,大約過了10秒鐘才進入"host:port>"提示符(因為在sendhttprequest()的實現代碼中的004行設置了讀取數據超時)。

 

(5)在"host:port>"提示符下直接按回車,輸入最近一次使用的域名www.baidu.com和80端口。再次輸入如下的http請求:

 

get / http/1.1host: www.baidu.comconnection: close

 

輸入完以上的http請求后,重新執行第3、4步操作。最后在顯示http響應消息內容后,直接直入了"host:port>"提示符。除了這種方法,將請求的第一行改為get / http/1.0.這樣也可以無需等待直接結束。

 

通過設置connection,可以在下載web資源(如多線程下載工具、web瀏覽器等)后,立即斷開網絡連接,這樣可以有效地降低客戶機的資源消耗。

 

2. date

 

這個date頭字段描述了請求消息和響應消息被創建的時間。這個字段值是一個http-date類型,它的格式必須是gmt(格林尼治)時間,gmt時間是就是北京時間減8小時。下面是date字段的一個例子:

 

date: tue, 15 nov 2007 08:12:31 gmt

 

3. content-length

 

指定消息實體的字節數。在請求消息中post方法必須使用content-length來指定請求消息的實體內容的字節數。在響應消息中這個字段值指定了當前http響應所返回的web資源的字節數。

|||

|||

 

三、http響應消息頭字段

 

1. accept-ranges

 

這個字段說明web服務器是否支持range(是否支持斷點續傳功能),如果支持,則返回accept-ranges: bytes,如果不支持,則返回accept-ranges: none.

 

2. content-range

 

指定了返回的web資源的字節范圍。這個字段值的格式是:

 

開始字節位置—結束字節位置/web資源的總字節數

 

下面是一個使用content-range的例子:

 

content-range:1000-3000/5000

 

測試

 

在http模擬器中連接服務器files.cnblogs.com,并輸入如下的http請求消息:

 

get /nokiaguy/httpsimulator.rar http/1.1host: files.cnblogs.comrange: bytes=1000-

 

返回的響應消息頭如圖2所示:

 

 

 

圖2

從上圖可以看出,服務器files.cnblogs.com支持斷點繼傳功能。而且還可以驗證content-length的值是當前會話傳過來的字節數,并不是web資源的總的字節數。而content-range字段值中"/"后面的數才是web資源總的字節數。

 

3. location

 

這個字段指定了上哪個新地址獲得新的web資源。當web資源更換url后,而一些老用戶不能及時得知這個新的url;因此,在老用戶訪問原來的url時,使用location將這個新的url返回給客戶端。這個地址轉換對用戶來說是完全透明。

 

二、http請求消息頭字段

 

1. host

 

host字段用于指定客戶端所訪問的資源所在的主機名和端口號。如果端口號等于連接服務器時所使用的端口號,則端口號可以省略。下面是一個使用host字段的一個例子:

 

host: www.sina.com.cn

 

這個字段是必須的,如果http請求不包含這個字段,服務器將返回400(bad request)響應狀態。

 

2. accept

 

accept字段頭確定客戶端可以接收的媒體類型。一般的格式是"*/*"或"類型/"子類型".這個子段頭可以傳遞多個媒體類型,中間用","隔開。如下面是一個accept的例子:

 

accept::image/gif,image/jpg

 

如果請求頭使用上述的accept字段值,則服務器端在動態生成網頁的img頭時將首先包含gif格式的圖像,如果gif圖象不存在,則包含jpg格式的圖象。

 

3. user-agent

 

這個字段頭用于指定客戶端是用什么訪問的服務器,如果是ie6瀏覽器,并且本機安裝了。net 2.0,則user-agent會有如下的值:

 

user-agent: mozilla/4.0 (compatible; msie 6.0; windows nt 5.2; sv1; maxthon; .net clr 1.1.4322; .net clr 2.0.50727; infopath.1; infopath.2)

 

服務器可以通過這個字段檢查客戶機的瀏覽器版本,并根據不同的版本來確定向客戶端發送的數據。

 

4. range

 

range字段頭通過服務器只傳輸一部分web資源。這個字段頭可以用來實現斷點續傳功能。有很多下載工具就是通過這個字段頭進行斷點續傳的。range字段可以通過三種格式設置要傳輸的字節范圍:

 

(1)range: bytes=1000-2000

 

傳輸范圍從1000到2000字節。

 

(2)range: bytes=1000-

 

傳輸web資源中第1000個字節以后的所有內容。

 

(3)range bytes=1000

 

傳輸最后1000個字節。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 禹城市| 内黄县| 宾川县| 汪清县| 兴仁县| 涿州市| 碌曲县| 佛冈县| 恩施市| 郑州市| 大邑县| 富宁县| 上高县| 绍兴市| 崇阳县| 禹城市| 永靖县| 青冈县| 龙井市| 合山市| 贵港市| 杭锦旗| 望奎县| 广水市| 昂仁县| 泉州市| 武清区| 双柏县| 巴林右旗| 三原县| 康保县| 三门县| 峨眉山市| 班戈县| 武清区| 玛曲县| 子长县| 赤水市| 高平市| 铜梁县| 孟州市|