天天看點

HTTP 頭部資訊詳解

HTTP 頭部解釋 

1. Accept:告訴WEB伺服器自己接受什麼媒體類型,*/* 表示任何類型,type/* 表示該類型下的所有子類型,type/sub-type。 

2. Accept-Charset: 浏覽器申明自己接收的字元集 

Accept-Encoding: 浏覽器申明自己接收的編碼方法,通常指定壓縮方法,是否支援壓縮,支援什麼壓縮方法 (gzip,deflate) 

Accept-Language::浏覽器申明自己接收的語言語言跟字元集的差別:中文是語言,中文有多種字元集,比如big5,gb2312,gbk等等。 

3. Accept-Ranges:WEB伺服器表明自己是否接受擷取其某個實體的一部分(比如檔案的一部分)的請求。bytes:表示接受,none:表示不接受。 

4. Age:當代理伺服器用自己緩存的實體去響應請求時,用該頭部表明該實體從産生到現在經過多長時間了。 

5. Authorization:當用戶端接收到來自WEB伺服器的 WWW-Authenticate 響應時,該頭部來回應自己的身份驗證資訊給WEB伺服器。 

6. Cache-Control:請求:no-cache(不要緩存的實體,要求現在從WEB伺服器去取) 

max-age:(隻接受 Age 值小于 max-age 值,并且沒有過期的對象) 

max-stale:(可以接受過去的對象,但是過期時間必須小于 

max-stale 值) 

min-fresh:(接受其新鮮生命期大于其目前 Age 跟 min-fresh 值之和的 

緩存對象) 

響應:public(可以用 Cached 内容回應任何使用者) 

private(隻能用緩存内容回應先前請求該内容的那個使用者) 

no-cache(可以緩存,但是隻有在跟WEB伺服器驗證了其有效後,才能傳回給用戶端) 

max-age:(本響應包含的對象的過期時間) 

ALL: no-store(不允許緩存) 

7. Connection:請求:close(告訴WEB伺服器或者代理伺服器,在完成本次請求的響應 

後,斷開連接配接,不要等待本次連接配接的後續請求了)。 

keepalive(告訴WEB伺服器或者代理伺服器,在完成本次請求的 

響應後,保持連接配接,等待本次連接配接的後續請求)。 

響應:close(連接配接已經關閉)。 

keepalive(連接配接保持着,在等待本次連接配接的後續請求)。 

Keep-Alive:如果浏覽器請求保持連接配接,則該頭部表明希望 WEB 伺服器保持 

連接配接多長時間(秒)。 

例如:Keep-Alive:300 

8. Content-Encoding:WEB伺服器表明自己使用了什麼壓縮方法(gzip,deflate)壓縮響應中的對象。 

例如:Content-Encoding:gzip 

Content-Language:WEB 伺服器告訴浏覽器自己響應的對象的語言。 

Content-Length: WEB 伺服器告訴浏覽器自己響應的對象的長度。 

例如:Content-Length: 26012 

Content-Range: WEB 伺服器表明該響應包含的部分對象為整個對象的哪個部分。 

例如:Content-Range: bytes 21010-47021/47022 

Content-Type: WEB 伺服器告訴浏覽器自己響應的對象的類型。 

例如:Content-Type:application/xml 

9. ETag:就是一個對象(比如URL)的标志值,就一個對象而言,比如一個 html 檔案, 

如果被修改了,其 Etag 也會别修改, 是以,ETag 的作用跟 Last-Modified 的 

作用差不多,主要供 WEB 伺服器 判斷一個對象是否改變了。 

比如前一次請求某個 html 檔案時,獲得了其 ETag,當這次又請求這個檔案時, 

浏覽器就會把先前獲得的 ETag 值發送給 WEB 伺服器,然後 WEB 伺服器 

會把這個 ETag 跟該檔案的目前 ETag 進行對比,然後就知道這個檔案 

有沒有改變了。 

10. Expired:WEB伺服器表明該實體将在什麼時候過期,對于過期了的對象,隻有在 

跟WEB伺服器驗證了其有效性後,才能用來響應客戶請求。 

是 HTTP/1.0 的頭部。 

例如:Expires:Sat, 23 May 2009 10:02:12 GMT 

11. Host:用戶端指定自己想通路的WEB伺服器的域名/IP 位址和端口号。 

例如:Host:rss.sina.com.cn 

12. If-Match:如果對象的 ETag 沒有改變,其實也就意味著對象沒有改變,才執行請求的動作。 

If-None-Match:如果對象的 ETag 改變了,其實也就意味著對象也改變了,才執行請求的動作。 

13. If-Modified-Since:如果請求的對象在該頭部指定的時間之後修改了,才執行請求 

的動作(比如傳回對象),否則傳回代碼304,告訴浏覽器該對象 

沒有修改。 

例如:If-Modified-Since:Thu, 10 Apr 2008 09:14:42 GMT 

If-Unmodified-Since:如果請求的對象在該頭部指定的時間之後沒修改過,才執行 

請求的動作(比如傳回對象)。

14. If-Range:浏覽器告訴 WEB 伺服器,如果我請求的對象沒有改變,就把我缺少的部分 

給我,如果對象改變了,就把整個對象給我。 浏覽器通過發送請求對象的 

ETag 或者 自己所知道的最後修改時間給 WEB 伺服器,讓其判斷對象是否 

改變了。 

總是跟 Range 頭部一起使用。 

15. Last-Modified:WEB 伺服器認為對象的最後修改時間,比如檔案的最後修改時間, 

動态頁面的最後産生時間等等。 

例如:Last-Modified:Tue, 06 May 2008 02:42:43 GMT 

16. Location:WEB 伺服器告訴浏覽器,試圖通路的對象已經被移到别的位置了, 

到該頭部指定的位置去取。 

例如:Location: 

​​

​​

​​

17. Pramga:主要使用 Pramga: no-cache,相當于 Cache-Control: no-cache。 

例如:Pragma:no-cache 

18. Proxy-Authenticate: 代理伺服器響應浏覽器,要求其提供代理身份驗證資訊。 

Proxy-Authorization:浏覽器響應代理伺服器的身份驗證請求,提供自己的身份資訊。 

19. Range:浏覽器(比如 Flashget 多線程下載下傳時)告訴 WEB 伺服器自己想取對象的哪部分。 

例如:Range: bytes=1173546- 

20. Referer:浏覽器向 WEB 伺服器表明自己是從哪個 網頁/URL 獲得/點選 目前請求中的網址/URL。 

例如:Referer:http://www.sina.com/ 

21. Server: WEB 伺服器表明自己是什麼軟體及版本等資訊。 

例如:Server:Apache/2.0.61 (Unix) 

22. User-Agent: 浏覽器表明自己的身份(是哪種浏覽器)。 

例如:User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; 

rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14 

23. Transfer-Encoding: WEB 伺服器表明自己對本響應消息體(不是消息體裡面的對象) 

作了怎樣的編碼,比如是否分塊(chunked)。 

例如:Transfer-Encoding: chunked 

24. Vary: WEB伺服器用該頭部的内容告訴 Cache 伺服器,在什麼條件下才能用本響應 

所傳回的對象響應後續的請求。 

假如源WEB伺服器在接到第一個請求消息時,其響應消息的頭部為: 

Content-Encoding: gzip; Vary: Content-Encoding 那麼 Cache 伺服器會分析後續 

請求消息的頭部,檢查其 Accept-Encoding,是否跟先前響應的 Vary 頭部值 

一緻,即是否使用相同的内容編碼方法,這樣就可以防止 Cache 伺服器用自己 

Cache 裡面壓縮後的實體響應給不具備解壓能力的浏覽器。 

例如:Vary:Accept-Encoding

25. Via: 列出從用戶端到 OCS 或者相反方向的響應經過了哪些代理伺服器,他們用 

什麼協定(和版本)發送的請求。 

當用戶端請求到達第一個代理伺服器時,該伺服器會在自己發出的請求裡面 

添加 Via 頭部,并填上自己的相關資訊,當下一個代理伺服器 收到第一個代理 

伺服器的請求時,會在自己發出的請求裡面複制前一個代理伺服器的請求的Via 

頭部,并把自己的相關資訊加到後面, 以此類推,當 OCS 收到最後一個代理服 

務器的請求時,檢查 Via 頭部,就知道該請求所經過的路由。 

例如:Via:1.0 236-81.D07071953.sina.com.cn:80 (squid/2.6.STABLE13) 

==================================== 

HTTP 請求消息頭部執行個體: 

Host:rss.sina.com.cn 

User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14 

Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5 

Accept-Language:zh-cn,zh;q=0.5 

Accept-Encoding:gzip,deflate 

Accept-Charset:gb2312,utf-8;q=0.7,*;q=0.7 

Keep-Alive:300 

Connection:keep-alive 

Cookie:userId=C5bYpXrimdmsiQmsBPnE1Vn8ZQmdWSm3WRlEB3vRwTnRtW <-- Cookie 

If-Modified-Since:Sun, 01 Jun 2008 12:05:30 GMT 

Cache-Control:max-age=0 

HTTP 響應消息頭部執行個體: 

Status:OK - 200 <-- 響應狀态碼,表示 web 伺服器處理的結果。 

Date:Sun, 01 Jun 2008 12:35:47 GMT 

Server:Apache/2.0.61 (Unix) 

Last-Modified:Sun, 01 Jun 2008 12:35:30 GMT 

Accept-Ranges:bytes 

Content-Length:18616 

Cache-Control:max-age=120 

Expires:Sun, 01 Jun 2008 12:37:47 GMT 

Content-Type:application/xml 

Age:2 

X-Cache:HIT from 236-41.D07071951.sina.com.cn <-- 反向代理伺服器使用的 HTTP 頭部 

Via:1.0 236-41.D07071951.sina.com.cn:80 (squid/2.6.STABLE13) 

Connection:close 

===================================== 

HTTP頭部資訊簡單說明 

一、HTTP響應碼響應碼由三位十進制數字組成,它們出現在由HTTP伺服器發送的響應的第一行。 

響應碼分五種類型,由它們的第一位數字表示: 

1xx:資訊,請求收到,繼續處理 

2xx:成功,行為被成功地接受、了解和采納 

3xx:重定向,為了完成請求,必須進一步執行的動作 

4xx:用戶端錯誤,請求包含文法錯誤或者請求無法實作 

5xx:伺服器錯誤,伺服器不能實作一種明顯無效的請求 

下表顯示每個響應碼及其含義: 

100 繼續101 分組交換協200 OK201 被建立202 被采納203 非授權資訊204 無内容205 重置内容206 部分内容300 多選項301 永久地傳送302 找到303 參見其他304 未改動305 使用代理307 暫時重定向400 錯誤請求401 未授權402 要求付費403 禁止404 未找到405 不允許的方法406 不被采納407 要求代理授權408 請求逾時409 沖突410 過期的411 要求的長度412 前提不成立413 請求執行個體太大414 請求URI太大415 不支援的媒體類型416 無法滿足的請求範圍417 失敗的預期500 内部伺服器錯誤501 未被使用502 網關錯誤503 不可用的服務504 網關逾時505 HTTP版本未被支援 

二、HTTP頭标頭标由主鍵/值對組成。它們描述用戶端或者伺服器的屬性、被傳輸的資源以及應該實作連接配接。 

四種不同類型的頭标: 

1.通用頭标:即可用于請求,也可用于響應,是作為一個整體而不是特定資源與事務相關聯。 

2.請求頭标:允許用戶端傳遞關于自身的資訊和希望的響應形式。 

3.響應頭标:伺服器和于傳遞自身資訊的響應。 

4.實體頭标:定義被傳送資源的資訊。即可用于請求,也可用于響應。 

頭标格式:<name>:<value><CRLF> 

下表描述在HTTP/1.1中用到的頭标 

Accept 定義用戶端可以處理的媒體類型,按優先級排序;在一個以逗号為分隔的清單中,可以定義多種類型和使用通配符。例如:Accept: image/jpeg,image/png,*/*Accept-Charset 定義用戶端可以處理的字元集,按優先級排序;在一個以逗号為分隔的清單中,可以定義多種類型和使用通配符。例如:Accept-Charset: iso-8859-1,*,utf-8 

Accept-Encoding 定義用戶端可以了解的編碼機制。例如:Accept-Encoding:gzip,compress 

Accept-Language 定義用戶端樂于接受的自然語言清單。例如:Accept-Language: en,de 

Accept-Ranges 一個響應頭标,它允許伺服器指明:将在給定的偏移和長度處,為資源組成部分的接受請求。該頭标的值被了解為請求範圍的度量機關。例如Accept-Ranges: bytes或Accept-Ranges: none 

Age 允許伺服器規定自伺服器生成該響應以來所經過的時間長度,以秒為機關。該頭标主要用于緩存響應。例如:Age: 30 

Allow 一個響應頭标,它定義一個由位于請求URI中的次源所支援的HTTP方法清單。例如:Allow: GET,PUT 

aUTHORIZATION 一個響應頭标,用于定義通路一種資源所必需的授權(域和被編碼的使用者ID與密碼)。例如:Authorization: Basic YXV0aG9yOnBoaWw= 

Cache-Control 一個用于定義緩存指令的通用頭标。例如:Cache-Control: max-age=30 

Connection 一個用于表明是否儲存socket連接配接為開放的通用頭标。例如:Connection: close或Connection: keep-alive 

Content-Base 一種定義基本URI的實體頭标,為了在實體範圍内解析相對URLs。如果沒有定義Content-Base頭标解析相對URLs,使用Content- Location URI(存在且絕對)或使用URI請求。例如:Content-Base: 

Content-Encoding 一種媒體類型修飾符,标明一個實體是如何編碼的。例如:Content-Encoding: zipContent-Language 用于指定在輸入流中資料的自然語言類型。例如:Content-Language: en 

Content-Length 指定包含于請求或響應中資料的位元組長度。例如:Content-Length:382 

Content-Location 指定包含于請求或響應中的資源定位(URI)。如果是一絕。對URL它也作為被解析實體的相對URL的出發點。例如:Content-Location: http://www.myweb.com/news 

Content-MD5 實體的一種MD5摘要,用作校驗和。發送方和接受方都計算MD5摘要,接受方将其計算的值與此頭标中傳遞的值進行比較。例如:Content-MD5: <base64 of 128 MD5 digest> 

Content-Range 随部分實體一同發送;标明被插入位元組的低位與高位位元組偏移,也标明此實體的總長度。例如:Content-Range: 1001-2000/5000 

Contern-Type 标明發送或者接收的實體的MIME類型。例如:Content-Type: text/html 

Date 發送HTTP消息的日期。例如:Date: Mon,10PR 18:42:51 GMT 

ETag 一種實體頭标,它向被發送的資源分派一個唯一的辨別符。對于可以使用多種URL請求的資源,ETag可以用于确定實際被發送的資源是否為同一資源。例如:ETag: '208f-419e-30f8dc99' 

Expires 指定實體的有效期。例如:Expires: Mon,05 Dec 2008 12:00:00 GMT 

Form 一種請求頭标,給定控制使用者代理的人工使用者的電子郵件位址。例如:From: [email protected] 

Host 被請求資源的主機名。對于使用HTTP/1.1的請求而言,此域是強制性的。例如:Host: www.myweb.com 

If-Modified-Since 如果包含了GET請求,導緻該請求條件性地依賴于資源上次修改日期。如果出現了此頭标,并且自指定日期以來,此資源已被修改,應該反回一個304響應代碼。例如:If-Modified-Since: Mon,10PR 18:42:51 GMT 

If-Match 如果包含于一個請求,指定一個或者多個實體标記。隻發送其ETag與清單中标記區配的資源。例如:If-Match: '208f-419e-308dc99' 

If-None-Match 如果包含一個請求,指定一個或者多個實體标記。資源的ETag不與清單中的任何一個條件比對,操作才執行。例如:If-None-Match: '208f-419e-308dc99' 

If-Range 指定資源的一個實體标記,用戶端已經擁有此資源的一個拷貝。必須與Range頭标一同使用。如果此實體自上次被用戶端檢索以來,還不曾修改過,那麼伺服器隻發送指定的範圍,否則它将發送整個資源。例如:Range: byte=0-499<CRLF>If-Range:'208f-419e-30f8dc99' 

If-Unmodified-Since 隻有自指定的日期以來,被請求的實體還不曾被修改過,才會傳回此實體。例如:If-Unmodified-Since:Mon,10PR 18:42:51 GMT 

Last-Modified 指定被請求資源上次被修改的日期和時間。例如:Last-Modified: Mon,10PR 18:42:51 GMT 

Location 對于一個已經移動的資源,用于重定向請求者至另一個位置。與狀态編碼302(暫時移動)或者301(永久性移動)配合使用。例如:Location: http://www2.myweb.com/index.jsp 

Max-Forwards 一個用于TRACE方法的請求頭标,以指定代理或網關的最大數目,該請求通過網關才得以路由。在通過請求傳遞之前,代理或網關應該減少此數目。例如:Max-Forwards: 3 

Pragma 一個通用頭标,它發送實作相關的資訊。例如:Pragma: no-cache 

Proxy-Authenticate 類似于WWW-Authenticate,便是有意請求隻來自請求鍊(代理)的下一個伺服器的認證。例如:Proxy-Authenticate: Basic realm-admin 

Proxy-Proxy-Authorization 類似于授權,但并非有意傳遞任何比在即時伺服器鍊中更進一步的内容。例如:Proxy-Proxy-Authorization: Basic YXV0aG9yOnBoaWw= 

Public 清單顯示伺服器所支援的方法集。例如:Public: OPTIONS,MGET,MHEAD,GET,HEAD 

Range 指定一種度量機關和一個部分被請求資源的偏移範圍。例如:Range: bytes=206-5513 

Refener 一種請求頭标域,标明産生請求的初始資源。對于HTML表單,它包含此表單的Web頁面的位址。例如:Refener: http://www.myweb.com/news/search.html 

Retry-After 一種響應頭标域,由伺服器與狀态編碼503(無法提供服務)配合發送,以标明再次請求之前應該等待多長時間。此時間即可以是一種日期,也可以是一種秒機關。例如:Retry-After: 18 

Server 一種标明Web伺服器軟體及其版本号的頭标。例如:Server: Apache/2.0.46(Win32) 

Transfer-Encoding 一種通用頭标,标明對應被接受方反向的消息體實施變換的類型。例如:Transfer-Encoding: chunked 

Upgrade 允許伺服器指定一種新的協定或者新的協定版本,與響應編碼101(切換協定)配合使用。例如:Upgrade: HTTP/2.0 

User-Agent 定義用于産生請求的軟體類型(典型的如Web浏覽器)。例如:User-Agent: Mozilla/4.0(compatible; MSIE 5.5; Windows NT; DigExt) 

Vary 一個響應頭标,用于表示使用伺服器驅動的協商從可用的響應表示中選擇響應實體。例如:Vary: *Via 一個包含所有中間主機和協定的通用頭标,用于滿足請求。例如:Via: 1.0 fred.com, 1.1 wilma.com 

繼續閱讀