HTTP报文首部详细内容见《图解HTTP》第6章。
通用首部字段
Cache-Control
控制缓存机制
-
Cache-Control: public 其他用户也可利用缓存。
-
Cache-Control: private 缓存服务器只对该用户提供缓存服务。
-
Cache-Control: no-cache 客户端发送则缓存服务器必须把客户端请求转发给源服务器。服务器返回该指令,那么缓存服务器不能对资源进行缓存。
-
Cache-Control: no-store 请求和响应中包含机密信息。规定进行缓存。
-
Cache-Control: s-maxage=604800 单位(秒) ,其只适用于供多位用户使用的公共缓存服务器。对于同一用户重复返回响应的服务器来说,这个指令没任何作用。
-
Cache-Control: max-age=604800 单位(秒) ,客户端发送:如果缓存资源的缓存时间比指定时间小,说明缓存没过期,客户端就接收缓存的资源。另外,max-age 值为0,缓存服务器通常要将请求转发给源服务器。服务器发送:缓存服务器不对资源有效性再做确认,而 max-age 值表示缓存的最长时间。
-
Cache-Control: min-fresh=60 单位(秒),要求缓存服务器返回还未过指定时间的缓存资源。
-
Cache-Control: max-stale=3600 单位(秒),如果未指定参数值,那么无论多久,客户端都会接受响应。如果指定了具体数值,那么即使过期,只要仍处于指定的时间内,仍会被客户端接收。
-
Cache-Control: only-if-cached 目标资源在缓存服务器有缓存的情况下,才会将其返回。若没有缓存,则返回状态码504 Gateway Timeout。
-
Cache-Control: must-revalidate 代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。会忽略请求的 max-stale 指令。
-
Cache-Control: proxy-revalidate 缓存服务器返回响应之前,必须再次验证缓存的有效性。
-
Cache-Control: no-transform 无论是在请求还是响应中,缓存都不能改变实体主体的媒体类型。防止缓存或代理压缩图片等类似操作。
-
Cache-Control 扩展字段内的指令。例子 Cache-Control: private, community="UCI" ,本身没有community这个指令,我们扩展了这个新指令,如果缓存服务器不能理解,就会直接忽略。因此,仅对能理解它的缓存服务器来说是有意义的。
Connection
-
Connection: 不再转发的首部字段名
控制不再转发代理的首部字段,客户端发送请求和服务器响应,使用 Connection 控制不再转发给代理的首部字段。 -
管理持久连接 Connection: close/ Connection: Keep-Alive
Date
表明HTTP报文的日期和时间。
Pragma
Trailer
事先说明在报文主体后记录了哪些首部字段。
Transfer-Encoding
规定传输报文主体时采用的编码格式,仅对分块传输编码有效。
Upgrade
用于检测HTTP协议及其他协议是否可使用更高的版本进行通信,其参数值可以用来指定一个完全不通的通信协议。
图示Upgrade 仅限于客户端和邻接服务器之间。因此,使用首部字段Upgrade时,还需要额外指定Connection:Upgrade
Via
报文经过代理或网关时,会在首部字段Via中附加该服务器的信息,然后进行转发。用于追踪客户端与服务器之间的请求和响应报文的传输路径,还可避免请求回环的发生。
Warning
Warning: [警告码][主机:端口号]"[警告内容]"([日期])
请求首部字段
Accept
通知服务器,能够处理的媒体类型及媒体类型的相对优先级。
Accept: text/plain; q=0.3,text/html
-
媒体类型例子
文本文件(text/html,text/plain,text/css...application/xhtml+xml,application/xml...)
图片文件(image/jpeg,image/gif,image/png...)
视频文件(video/mpeg,video/quicktime...)
应用程序使用的二进制文件(application/octet-stream,application/zip...) -
使用q规定媒体类型的优先级,范围0~1。当服务器提供多种内容时,优先返回权重最高的媒体类型。默认权重为q=1.0
Accept-Charset
Accept-Charset: iso-8859-5, unicode-1-1;q=0.8
通知服务器用户支持的字符集及优先级。一次性可指定多种字符集,用q表示权重。
Accept-Encoding
Accept-Encoding: gzip, deflate
通知服务器用户支持的内容编码及优先级。一次性可指定多种内容编码。采用权重q值表示优先级。使用星号*作为通配符,表示任意的编码格式。
Accept-Language
Accept-Language: zh-cn,zh;q=0.7,en-us,en;q=0.3
通知服务器用户支持的自然语言集及优先级。一次性可指定多种自然语言集。采用权重q值表示优先级。
Authorization
Authorization: Basic dWVub3Nlbjpwxyi6yyZA==
告知服务器,用户代理的认证信息。
Expect ?
From ?
Host
虚拟主机运行在同一个IP上,所以必须使用首部字段Host加以区分。Host是必须被包含在请求内的首付字段。
If-Match
If-Match: "123456"
服务器比对If-Match字段值和资源的ETag值,当两者一致时,才会执行请求。反之,返回状态码412响应。使用星号 * 会忽略校验,只要资源存在就处理请求。
If-Modified-Since
请求资源在指定时间之后更新过,则执行请求。若在指定时间后没更新过,返回304 Not Modified。
If-None-Match
与 If-Match 相反,If-None-Match的字段值与请求资源的ETag不一致时,才会处理请求。
在GET或HEAD方法使用首部字段If-None-Match可获取最新资源。这与使用首部字段 If-Modified-Since 有些类似。
If-Range
告知服务器指定的If-Range字段值和请求资源的ETag值(或指定的时间值和请求资源的时间值)想一致时,则作为范围请求处理。反之,返回全体资源。
If-Unmodified-Since
与 If-Modified-Since 相反,请求资源在指定时间之后未更新过,则执行请求。若在指定时间后发生了更新,返回412 Precondition Failed。
Max-Forwards
通过TRACE 或 OPTIONS 方法,发送包含首部字段 Max-Forwards 的请求时,该字段以整数形式指定可经过的服务器最大数目。往下一个服务器转发请求之前,Max-Forwards值减1,当服务器收到Max-Forwards值为0的请求,则不进行转发,而是直接返回响应。
Proxy-Authorization
客户端和代理之间的认证。
Range
Range: bytes=5001-10000
服务器在处理请求之后返回状态码为206 Partial Content 的响应。无法处理该范围请求时,则返回状态码200 OK的响应及全部资源。
Referer
Referer: http://www.xxx.jp/index.htm
告知服务器请求的原始资源的URI。
TE
TE: gzip, deflate;q=0.5
告知服务器客户端能够处理响应的传输编码方式及优先级。与Accept-Encoding相似,但只用于传输编码。
TE: trailers
指定分块传输编码方法。
User-Agent
将创建请求的浏览器和用户代理名称等信息传达给服务器。
响应首部字段
Accept-Ranges
告知客户端是否能处理范围请求。
Accept-Ranges: none
不能
Accept-Ranges: bytes
能
Age
Age: 600
告知客户端,源服务器在多久前创建了响应。
ETag
告知客户端资源实体的标识。
Location
将客户端引导至Location指定的URI,进行重定向资源的访问。
Proxy-Authenticate
把由代理服务器所要求的认证信息发送给客户端。
Retry-After
告知客户端应该在多久之后再次发送请求。字段值可以为具体的日期时间,也可以是创建响应后的秒数。
Server
Server: Apache/2.2.17(Unix)
告知客户端当前服务器上安装的HTTP服务器应用程序的信息。
Vary
从代理服务器接收到源服务器返回的包含Vary的响应后,仅对请求中含有相同Vary值的请求返回其缓存。即使对相同资源发起请求,由于Vary指定的首部字段不相同,此时必须从源服务器重新获取资源。
Vary
WWW-Authenticate
用于HTTP访问认证。
实体首部字段
用于补充实体内容的更新时间等与实体相关的信息。
Allow
Allow: GET, HEAD
通知客户端能够支持 Request-URI指定资源的所有HTTP方法。
Content-Encoding
Content-Encoding: gzip
告知客户端服务器对实体的主体部分选用的内容编码方式。
Content-Language
告知客户端实体主体使用的自然语言。
Content-Length
表名实体主体部分的大小(单位:字节)。对实体主体进行内容编码传输时,不能再使用Content-Length首部字段。
Content-Location
Content-Location: http://www.xxx.jp/index-ja.html
给出与报文主体部分相对应的URI。
Content-MD5
Content-MD5: JFHJ78BFLS89==
用于检查报文主体在传输过程中是否保持完整,以及确认传输到达。
采用这种方法,对内容上的偶发性改变是无从查证的,也无法检测出恶意篡改。
Content-Range
Content-Range: bytes 5001-10000/10000
针对范围请求,告知客户端返回的实体的哪个部分符合范围请求。表示当前发送部分及整个实体大小。
Content-Type
Content-Type: text/html; charset=UTF-8
说明实体主体内对象的媒体类型。
Expires
Expires: Wed, 04 Jul 2012 08:26:05 GMT
将资源失效的日期告知客户端。
Last-Modified
指明资源最终修改的时间。
Cookie的首部字段
Set-Cookie
属性 | 说明 |
---|---|
NAME=VALUE | Cookie的名称(必需项) |
expires=DATE | Cookie的有效期(不指定则默认为浏览器关闭为止) |
path=PATH | 将服务器上的文件目录作为Cookie的适用对象(不指定默认为文档所在的文件目录) |
domain=域名 | Cookie适用对象的域名(不指定默认为创建Cookie的服务器的域名) |
Secure | 仅在HTTPS安全通信时才会发送Cookie |
HttpOnly | 使Cookie不能被JavaScript脚本访问 |
Cookie
Cookie: status=enable
告知服务器Cookie
其他首部字段
X-Frame-Options
防止点击劫持攻击。取值:DENY、SAMEORIGIN
X-XSS-Protection
针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器XSS防护机制开关。取值:0、1
DNT
表示拒绝被精准广告追踪的一种方法。取值:0、1
P3P
保护用户隐私
网友评论