有四种头标:
1. 通用头标 既可用于请求有可用于响应,并且是作为一个整体而不是特定资源 与事务相关联。
2. 请求头标 允许客户端传递关于自身信息和希望的响应形式。
3. 响应头标 服务器用于传递自身信息和响应。
4. 实体头标 定义被传送资源的信息。既可用于请求,也可用于响应
头标以如下的单行形式发送。
<name>:<value><crlf>
其中
name是头标名,大小写敏感
value是头标值;
crlf是回车换行符
JSP页面可以使用request.getHeader()方法读取特定的头标值。也可以使用response.setHeader方法设置头标值。
以下是HTTP/1.1中用到的头标:
头标 | 描述 |
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:rolia_cn@hotmail.com |
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 |
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
分享到:
相关推荐
Live http header插件介绍 1 Live http header插件简介 2 Live http header插件的安装 3 Live http header功能介绍 目录 Live http header插件简介 Live http headers是一个用于抓包改包、分析HTTP流量的 Firefox ...
http header 详细介绍,详细的定义,类型等等等,希望对大家有帮助
### JSP获取HTTP Header信息(Request)详解 在Web开发中,了解如何获取HTTP请求头信息是非常重要的,因为这些信息能够帮助我们更好地理解客户端环境、优化响应策略以及进行安全性检查等。下面将详细介绍JSP中如何...
虽然要分,但您回复后,就不扣分了。 主要修改了 ContentLength 的类型错误。 可以方便 用 http 下载大文件。
HTTP头(HTTP Header)是HTTP协议中的一个重要组成部分,它包含了请求头、响应头、通用头等多种类型,用于传递额外的信息,如客户端的偏好、身份验证、缓存控制等。以下是对HTTP头的一些关键知识点的详细解释: 1. ...
go-httpheader go-httpheader是一个Go库,用于将结构编码到Header字段中。安装go get -u github.com/mozillazg/go-httpheader 用法 package mainimport ("fmt""net/http""github.com/mozillazg/go-httpheader")type ...
标题“风吟PHP HTTP Header 信息检测.rar”指的是一个使用PHP编写的工具,该工具能够检测HTTP头部信息,特别是与HTTP响应头相关的压缩状态,如gzip压缩,以及服务器的相关信息。这个工具对于开发者来说非常有用,...
http Header 详解.pdf
本文实例讲述了go语言在请求http时加入自定义http header的方法。分享给大家供大家参考。具体实现方法如下: 代码如下: client := &http.Client{] req, err := http.NewRequest(“POST”, “http://example.com”, ...
HTTP Headers 是 HTTP 协议的重要组成部分,用于在客户端(如浏览器)和服务器之间传递信息。HTTP 协议是万维网的基础,几乎所有网页内容的传输都依赖于它。HTTP Headers 负责携带有关请求、响应以及客户端和服务器...
httpheader 这是一个Go包,用于正确解析和生成标准HTTP标头。 它知道复杂的标头,例如 , 和 。 与许多其他实现不同,它处理语法的所有棘手位,例如带逗号,标题行和参数。 它为您提供了方便的结构,并且可以将它们...
HttpWatch是一款专业的HTTP性能分析工具,它主要用于帮助开发者和网络管理员深入理解网页加载和交互过程中的性能问题。这款工具能够捕获并分析HTTP头部信息,同时提供表单数据的查看功能,以提升网页应用的效率和...
语言:Deutsch,English,Français 显示HTTP标头字段。 您可以编辑并重新提交。 显示HTTP标头字段。 您可以编辑并重新提交。...请将错误或想法报告给https://github.com/Nitrama/HTTP-Header-Live谢谢:-)
HTTP协议Header详解是html帮助格式的,方便查询, 通过HTTP协议RFC2616整理的, 目录: 头域定义 2 1 Accept 2 2 Accept-Charset 4 3 Accept-Encoding 5 4 Accept-Language 6 5 Accept-Range 7 6 Age 7 7 Allow 8 8 ...
2020-02-19 10:34:46.901 INFO 5920 --- [nio-8080-exec-1] o.apache.coyote.http11.Http11Processor : Error parsing HTTP request header Note: further occurrences of HTTP header parsing errors will be ...
add by zhj: Django将所有http header(包括你自定义的http header)都放在了HttpRequest.META这个Python标准字典中,当然HttpRequest.META 中还包含其它一些键值对,这些键值对是Django加进去的,如SERVER_PORT等。...
1、header()函数的作用是:发送一个原始 HTTP 标头[Http Header]到客户端。 header(string,replace,http_response_code) /*string:必需。规定要发送的报头字符串。 replace:可选。指示该报头是否替换之前的报头...
本主题聚焦于一个常见的问题——"网络请求封装工具类,缺少header",这意味着开发者在构建自己的网络请求库或者使用第三方库时,可能忽视了添加HTTP Header这一重要环节。HTTP Header在请求中起到关键作用,它可以...
HTTP签名标头(http-signature-header) 一个用于创建和验证HTTP签名标头JavaScript库 目录 背景 安装 要在本地安装(用于开发): git clone https://github.com/digitalbazaar/http-signature-header.git cd ...