HTTP报文首部

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

保护用户隐私

你可能感兴趣的:(HTTP报文首部)