HTTP header

有四種頭標:

1. 通用頭標 既可用於請求有可用於響應,並且是作爲一個整體而不是特定資源 與事務相關聯。

2. 請求頭標 允許客戶端傳遞關於自身信息和希望的響應形式。

3. 響應頭標 服務器用於傳遞自身信息和響應。

4. 實體頭標 定義被傳送資源的信息。既可用於請求,也可用於響應

頭標以如下的單行形式發送。

<name>:<value><crlf>

其中

name是頭標名,大小寫敏感

value是頭標值;

crlf是回車換行符

JSP頁面可以使用request.getHeader()方法讀取特定的頭標值。也可以使用response.setHeader方法設置頭標值。

以下是HTTP/1.1中用到的頭標:

[table]
|頭標| 描述|
|Content-Range|隨部分實體一同發送;標明被插入點的低位與高位字節的偏移,也標明此實體的總長度。例如:Content-Range:1001-2000/5000|
|Content-Type|表明發送或接受的實體的MIME類型。如:Content-Type:text/html|
|Date|發送HTTP信息的日期,如:Date:Mon.16.Mar 2000 18:22:22 GMT|
|Etag|一種實體頭標,它向被髮送的資源分配唯一的標識符,對於可以使用多種URL請求的資源,Etag可以確定實際被髮送的資源是否爲同一資源。例如:Etag:293f-334f-1547812|
|Expires|指定實體的有效期。例如:Expires: Mon.16.Mar 2000 18:22:55 GMT|
|From|請求頭標。給定控制用戶代理的人工用戶的電子郵件地址。例如:From:[email protected]|
|Host| 被請求資源的主機名(以及可選的端口號)。對於使用HTTP/1.1的請求而言,此域是強制性的。例如:Host:localhost|
|If-Modified-Since|如果包含了GET請求,導致該請求條件性的以來於資源上次修改日期。如果出現此頭標,並且自指定日期以來。此資源已經被修改,應該返回一個304響應代碼。例如:If-Modified-Since: Mon.16.Mar 2000 18:22:22 GMT|
|If-Match| 如果包含於一個請求,指定一個或多個請求實體標記(見ETag)。只發送其Etag與列表中標記匹配的資源。如:If-Match: 293f-334f-1547812|
|If-None-Match| 如果包含於一個請求,指定一個或多個請求實體標記(見ETag)。只有當資源的Etag不與列表中的任何一個條目匹配,操作才執行。如:If-None-Match: 293f-334f-1547812|
|If-Range| 指定資源的一個實體標記(見Etag),客戶端已經擁有此資源的一個拷貝。必須與Range頭標一同使用。如果此實體自上次被客戶端檢索以來還不曾被修改過。那麼,服務器將只發送指定的範圍。否則它將發送整個資源。如:Rang:byte=0-454 If-Rang: 293f-334f-1547812|
|If-Unmodified-Since| 與If-Modified-since相似,不過是在相反的意義上。只有自指定的日期來,被請求的實體還不曾被修改過,纔會返回此實體。例如:If-Unmodified-Since: Mon.16.Mar 2000 18:22:22 GMT|
|Last-Modified| 指定被請求資源上次被修改的日期和時間。如:Last-Modified: Mon.16.Mar 2000 18:22:22 GMT|
|Location|對於一個已經移動的資源。用於重定向請求者至另一個位置。與狀態編碼302(暫時移動)或者301(永久移動)配合使用。如:Location:http://localhost/index.jsp|
|Max-Forwards| 一個用於TRACE方法的請求頭標,指定代理或網關的最大數目。該請求通過網關才得以路由。在通過請求傳遞之前,代理或網關應該減少此數目。如:Max-Forwards:3|
|Parama|通用頭標。它發送實體相關的信息。如:Parama:no-cache|
|Proxy-Authenticate| 類似於WWW-Authenticate,但是有意請求只來自請求鏈(代理)的下一個服務器的認證。如:Proxy-Authenticate:Basic SDF1SF121EW=|
|Public| 列表顯示服務器所支持的方法集。如:Public:OPTIONS,MGET,MHEAD,GET,HEAD|
|Range| 指定一種度量單位和一個部分被請求資源的偏移範圍。如:Range:bytes=206-5513|
|Referer| 一種請求頭標域,標明產生請求的初始資源。對於HTML表單,它包含此表單的Web頁面的地址。如:Referer: http://localhost/search.html|
|Retry-After| 響應頭標域,由服務器和狀態編碼503(無法提供服務)配合發送,以標明再次請求之前應該等待多長時間。此時間既可以是一個日期,也可以是一種一秒爲單位的數目。如:Retry-After:8 Retry-After: Mon.16.Mar 2000 18:22:22 GMT|
|Server| 一種表明Web服務器軟件及版本號的頭標。如:Server:Apache/1.3.3(Win)|
|Transfer-Encoding| 通用頭標,標明對應該被接受方反向的信息體實施變換的類型。如:Transfer-Encoding:chunked|
|Update| 允許服務器指定一個新的協議或新的協議版本,與響應碼101(切換協議)配合使用如:Update:HTTP/2.0|
|User-Agent| 定義用於產生請求的軟件類型(典型的,如Web瀏覽器)。如:User-Agent=Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Poco 0.31; InfoPath.2)|
|Vary| 響應頭標。用於表示使用服務器驅動的協商從可用的響應表示中選擇響應實體。例如:Vary:*|
|Via| 一個包含所有中間主機和協議的通用頭標。用於滿足請求。如:Via:1.0 fred.com,1.1 wila.com|
|Warning| 響應頭標。提供關於響應狀態的補充信息。如:Warning: 99 www.google.com Piano needs turnig|
|WWW-Authenticate|一個提示用戶代理提供用戶名和密碼的響應頭標。與狀態碼401(未授權)配合使用。希望響應一個授權頭標。如:www-authenticate: Basic realm=rolia|
[/table]

REMOTE_ADDR – 訪問客戶端的 IP 地址
HTTP_VIA – 如果有該條信息, 就證明您使用了代理服務器,代理服務器的地址就是後面的數值。
HTTP_X_FORWARDED_FOR – 如果有該條信息, 也證明了您使用了代理服務器代理服務器的地址就是後面的數值。
HTTP_ACCEPT_LANGUAGE – 您瀏覽器所使用的語言集
HTTP_USER_AGENT – 對大多數瀏覽器而言,這個值一般是 Mozilla. 可能還會包括瀏覽器的類型和版本號以及操作系統信息。
HTTP_HOST – 網頁服務器名稱

使用不同種類代理服務器,上面的信息會有所不同:

一、沒有使用代理服務器的情況:

REMOTE_ADDR = 您的 IP
HTTP_VIA = 沒數值或不顯示
HTTP_X_FORWARDED_FOR = 沒數值或不顯示

二、使用透明代理服務器的情況:Transparent Proxies

REMOTE_ADDR = 代理服務器 IP
HTTP_VIA = 代理服務器 IP
HTTP_X_FORWARDED_FOR = 您的真實 IP

這類代理服務器還是將您的信息轉發給您的訪問對象,無法達到隱藏真實身份的目的。

三、使用普通匿名代理服務器的情況:Anonymous Proxies

REMOTE_ADDR = 代理服務器 IP
HTTP_VIA = 代理服務器 IP
HTTP_X_FORWARDED_FOR = 代理服務器 IP

隱藏了您的真實IP,但是向訪問對象透露了您是使用代理服務器訪問他們的。

四、使用欺騙性代理服務器的情況:Distorting Proxies

REMOTE_ADDR = 代理服務器 IP
HTTP_VIA = 代理服務器 IP
HTTP_X_FORWARDED_FOR = 隨機的 IP

告訴了訪問對象您使用了代理服務器,但編造了一個虛假的隨機IP代替您的真實IP欺騙它。

五、使用高匿名代理服務器的情況:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服務器 IP
HTTP_VIA = 沒數值或不顯示
HTTP_X_FORWARDED_FOR = 沒數值或不顯示

完全用代理服務器的信息替代了您的所有信息,就象您就是完全使用那臺代理服務器直接訪問對象。

除此之外,proxy judges 還提供了其他可供參考的判定信息,您可以在實踐中加以利用。

HTTP HEADER 變量意義一覽表
REMOTE_ADDR:扔出REQUEST的客戶端IP地址(也可能是路由上最後一個Proxy)
REMOTE_HOST: 扔出REQUEST的客戶端主機名(也可能是路由上最後一個Proxy)
REMOTE_USER:扔出REQUEST的客戶端認證用戶名
REMOTE_PORT:扔出REQUEST的客戶端端口號
REMOTE_IDENT:扔出REQUEST的客戶端用戶名(支持IDENT協議的時候纔有用)

HTTP_X_FORWARDED_FOR:接續的原始IP地址
HTTP_VIA:Proxy的信息
HTTP_FORWARDED:Proxy的URI、以及客戶端的全域名(FQDN)
HTTP_CACHE_CONTROL:Cache的控制信息(比如 max-age=259200 最長時間)
HTTP_PROXY_CONNECTION:Proxy的接續狀態
HTTP_SP_HOST:接續的原始IP地址
HTTP_CACHE_INFO:Cache信息
HTTP_CLIENT_IP:客戶端IP(TrafficServer或者NetscapeProxy會使用此變量)
HTTP_MAX_FORWARDS:最多路經幾個Proxy

HTTP_ACCEPT: 客戶端的瀏覽器支持的MIME種類[cchere.net 西西河 你克我服]
HTTP_ACCEPT_CHARSET:客戶端瀏覽器支持的字符集
HTTP_ACCEPT_ENCODING:客戶端瀏覽器支持的編碼方式(比如gzip,deflate等等)
HTTP_ACCEPT_LANGUAGE:客戶端瀏覽器支持的語種(比如cn,en等等)
HTTP_CONNECTION:HTTP接續的狀態(比如keep-alive等等)
HTTP_COOKIE:對當前URL所保留的相關Cookie信息
HTTP_FROM:客戶端瀏覽器所設定的email地址
HTTP_HOST:客戶端所要訪問的主機名
HTTP_PRAGMA:Cache模式(對HTTP 1.0有效)
HTTP_REFERER:本次訪問前的上次訪問URL地址
HTTP_UA_CPU:客戶端的CPU信息
HTTP_UA_OS:客戶端的OS信息
HTTP_USER_AGENT:客戶但瀏覽器的版本信息



原文地址 http://www.programfan.com/blog/article.asp?id=24720
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章