Connection的頭字段

2021-07-09 13:42:28 字數 3307 閱讀 3271

一、通用頭欄位

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模擬器中輸入如下的網域名稱:

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

(3)按兩下回車(輸入乙個空行)後,傳送請求訊息,並得到如圖1

如示的http響應訊息頭:

圖1(4)輸入y或y後(在顯示http響應頭後,要立刻輸入y或y),顯示響應訊息的內容。在顯示完內容後,大約過了10秒鐘才進入"host:port>"提示符(因為在sendhttprequest()的實現**中的004行設定了讀取資料超時)。

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

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

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資源的位元組數。

二、

請求訊息頭欄位

1. host

host欄位用於指定客戶端所訪問的資源所在的主機名和埠號。如果埠號等於連線伺服器時所使用的埠號,則埠號可以省略。下面是乙個使用host欄位的乙個例子:

host: www.sina.com.cn

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

2. accept

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

如果請求頭使用上述的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

(1)range: bytes=1000-2000

傳輸範圍從1000到2000位元組。

(2)range: bytes=1000-

傳輸web資源中第1000個位元組以後的所有內容。

(3)range bytes=1000

傳輸最後1000個位元組。

三、

響應訊息頭欄位

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請求訊息:

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

圖2從上圖可以看出,伺服器

files.cnblogs.com

支援斷點繼傳功能。而且還可以驗證content-length的值是當前會話傳過來的位元組數,並不是web資源的總的位元組數。而content-range字段值中"/"後面的數才是web資源總的位元組數。

3.  location

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

http協議中connection頭的作用

在http1.1中request和reponse header中都有可能出現乙個connection的頭,此header的含義是當client和server通訊時對於長鏈結如何進行處理。在http1.1中,client和server都是預設對方支援長鏈結的,如果client使用http1.1協議,但...

rtsp頭欄位選項

rtsp協議是一種文字協議,採用 utf 8 編 碼中的 iso 10646 字符集。一行可通過 crlf 終止,但接收端需要做好解釋 cr 和 lf 作為一行終止符 的準備。關於頭欄位概述如下 header type support methods accept ropt.entity accep...

http 請求頭欄位

1.http1.0請求協議特點是一次只能訪問伺服器上的乙個請求資源,請求完畢後伺服器立馬斷開連線 http1.1協議則可訪問多個資源。2.get請求資料容量不能超過1k,get請求陣列在請求資源後邊即在請求行 post請求資料量沒限制,post請求資料在請求體中 3.請求頭各欄位詳解 accept ...