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 得到/點擊 當前請求中
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頭部信息簡單說明
2008-02-28 03:13
1、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版本未被支持
2、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: http://www.myweb.com
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: webmaster@myweb.com
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
Warning 用於提供關於響應狀態補充信息的響應頭標。例如:Warning: 99 www.myweb.com Piano needs tuning
www-Authenticate 一個提示用戶代理提供用戶名和口令的響應頭標,與狀態編碼401(未受權)配合使用。響應一個受權頭標。例如:www-Authenticate: Basic realm=zxm.mgmthtml