HTTP Header

来源:互联网 发布:网络水军是什么 编辑:程序博客网 时间:2024/05/24 16:14
有四种头标: 

1.  通用头标    既可用于请求有可用于响应,并且是作为一个整体而不是特定资源  与事务相关联。 

2.  请求头标    允许客户端传递关于自身信息和希望的响应形式。 

3.  响应头标    服务器用于传递自身信息和响应。 

4.  实体头标    定义被传送资源的信息。既可用于请求,也可用于响应 

头标以如下的单行形式发送。 

<name>:<value><crlf> 

其中 

name是头标名,大小写敏感 

value是头标值; 

crlf是回车换行符 

JSP页面可以使用request.getHeader()方法读取特定的头标值。也可以使用response.setHeader方法设置头标值。

以下是HTTP/1.1中用到的头标: 

头标描述Content-Range随部分实体一同发送;标明被插入点的低位与高位字节的偏移,也标明此实体的总长度。例如:Content-Range:1001-2000/5000Content-Type表明发送或接受的实体的MIME类型。如:Content-Type:text/htmlDate发送HTTP信息的日期,如:Date:Mon.16.Mar 2000 18:22:22 GMTEtag一种实体头标,它向被发送的资源分配唯一的标识符,对于可以使用多种URL请求的资源,Etag可以确定实际被发送的资源是否为同一资源。例如:Etag:293f-334f-1547812Expires指定实体的有效期。例如:Expires: Mon.16.Mar 2000 18:22:55 GMTFrom请求头标。给定控制用户代理的人工用户的电子邮件地址。例如:From:rolia_cn@hotmail.comHost被请求资源的主机名(以及可选的端口号)。对于使用HTTP/1.1的请求而言,此域是强制性的。例如:Host:localhostIf-Modified-Since如果包含了GET请求,导致该请求条件性的以来于资源上次修改日期。如果出现此头标,并且自指定日期以来。此资源已经被修改,应该返回一个304响应代码。例如:If-Modified-Since: Mon.16.Mar 2000 18:22:22 GMTIf-Match如果包含于一个请求,指定一个或多个请求实体标记(见ETag)。只发送其Etag与列表中标记匹配的资源。如:If-Match: 293f-334f-1547812If-None-Match如果包含于一个请求,指定一个或多个请求实体标记(见ETag)。只有当资源的Etag不与列表中的任何一个条目匹配,操作才执行。如:If-None-Match: 293f-334f-1547812If-Range指定资源的一个实体标记(见Etag),客户端已经拥有此资源的一个拷贝。必须与Range头标一同使用。如果此实体自上次被客户端检索以来还不曾被修改过。那么,服务器将只发送指定的范围。否则它将发送整个资源。如:Rang:byte=0-454  If-Rang: 293f-334f-1547812If-Unmodified-Since与If-Modified-since相似,不过是在相反的意义上。只有自指定的日期来,被请求的实体还不曾被修改过,才会返回此实体。例如:If-Unmodified-Since: Mon.16.Mar 2000 18:22:22 GMTLast-Modified指定被请求资源上次被修改的日期和时间。如:Last-Modified: Mon.16.Mar 2000 18:22:22 GMTLocation对于一个已经移动的资源。用于重定向请求者至另一个位置。与状态编码302(暂时移动)或者301(永久移动)配合使用。如:Location:http://localhost/index.jspMax-Forwards一个用于TRACE方法的请求头标,指定代理或网关的最大数目。该请求通过网关才得以路由。在通过请求传递之前,代理或网关应该减少此数目。如:Max-Forwards:3Parama通用头标。它发送实体相关的信息。如:Parama:no-cacheProxy-Authenticate类似于WWW-Authenticate,但是有意请求只来自请求链(代理)的下一个服务器的认证。如:Proxy-Authenticate:Basic SDF1SF121EW=Public列表显示服务器所支持的方法集。如:Public:OPTIONS,MGET,MHEAD,GET,HEADRange指定一种度量单位和一个部分被请求资源的偏移范围。如:Range:bytes=206-5513Referer一种请求头标域,标明产生请求的初始资源。对于HTML表单,它包含此表单的Web页面的地址。如:Referer: http://localhost/search.htmlRetry-After响应头标域,由服务器和状态编码503(无法提供服务)配合发送,以标明再次请求之前应该等待多长时间。此时间既可以是一个日期,也可以是一种一秒为单位的数目。如:Retry-After:8   Retry-After: Mon.16.Mar 2000 18:22:22 GMTServer一种表明Web服务器软件及版本号的头标。如:Server:Apache/1.3.3(Win)Transfer-Encoding通用头标,标明对应该被接受方反向的信息体实施变换的类型。如:Transfer-Encoding:chunkedUpdate允许服务器指定一个新的协议或新的协议版本,与响应码101(切换协议)配合使用如:Update:HTTP/2.0User-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.comWarning响应头标。提供关于响应状态的补充信息。如:Warning: 99 www.google.com Piano needs turnigWWW-Authenticate一个提示用户代理提供用户名和密码的响应头标。与状态码401(未授权)配合使用。希望响应一个授权头标。如:www-authenticate: Basic realm=rolia

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
原创粉丝点击