学习http协议消息报头总结

通常,http消息包括客户向服务器的请求消息和服务器向客户机的响应消息。

请求消息和响应消息都是由开始行(对于请求消息,开始行就是请求行,对于响应消息,开始行就是状态行)、消息报头(可选)、空行(CRLF的行)、消息正文(可选)组成。(注:CRLF表示回车和换行,除了作为结尾的CRLF外,不允许出现单独的CR或LF字符)。

http消息报头又分为普通报头(通用报头)、请求报头、响应报头、实体报头。

每一个报头域都是由名字+":"+空格+值三部分组成的,消息报头域的名字大小写无关的。

1、普通报头(通用报头)

在普通报头中,有少数报头域用于所有的请求消息和响应消息,包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的扩展要求通讯双方都支持此扩展,如果存在不支持的通通用头域,一般将会作为实体头域处理。

Cache-Control指定请求和响应遵循的缓存机制。在请求消息或响应消息设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache,no-store,max-age,max-stale,min-fresh,only-if-cached,响应消息中的指令包括public,private,no-cache,no-transform,must-revalidate,proxy-revalidate,max-age,含义如下:

pubic指定响应可被任何缓存区缓存。

private指示对于单个用户的真个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。

no-cache指示请求或响应消息不能缓存。

no-store用于防止重要的消息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。

max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。

min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。

max-fresh指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期间指定值之内的响应消息。

Date头域

Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如DateThu,15Nov201218:29:30GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。

Pragma头域

Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache-Control:no-cache相同。

Connection头域

允许发送指定连接的选项。例如指定连接是连续,或者指定“close”选项,

通知服务器,在响应完成后,关闭连接

2、请求报头

请求报头允许客户端向服务器端传递请求的附加信息以及客户端自身的信息。

MethodRequest-URIHTTP-Version(CRLF)

Method表示对于Request-URI完成的方法,这个字段是大小写敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD应该被所有的通用WEB服务器支持,其他所有方法的实现是可选的。GET方法取回由Request-URI标识的信息。HEAD方法也是取回由Request-URI标识的信息,只是可以在响应时,不返回消息体。POST方法可以请求服务器接收包含在请求中的实体信息,可以用于提交表单,向新闻组、BBS、邮件群组和数据库发送消息。

Request-URI遵循URI格式,在此字段为星号(*)时,说明请求并不用于某个特定的资源地址,而是用于服务器本身。HTTP-Version表示支持的HTTP版本,例如为HTTP/1.1。CRLF表示换行回车符。

请求头域允许客户端向服务器传递关于请求或者关于客户机的附加信息。请求头域可能包含下列字段Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If-Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、Proxy-Authorization、Range、Referer、User-Agent。对请求头域的扩展要求通讯双方都支持,如果存在不支持的请求头域,一般将会作为实体头域处理。

典型的请求消息:

GET/index.phpHTTP/1.1(CRLF)

Host:www.jianzhandiy.com(CRLF)

Accept:image/gif,image/x-xbitmap,image/jpeg,application/x-shockwave-flas

h,application/vnd.ms-excel,application/vnd.ms-powerpoint,application/msword,

*/*(CRLF)

Accept-Language:zh-cn(CRLF)

Pragma:no-cache(CRLF)

Accept-Encoding:gzip,deflate(CRLF)(实体消息)

Cache-Control:no-cache(CRLF)

Referer:www.jianzhandiy.com(CRLF)

User-Agent:Mozilla/5.0(WindowsNT6.1;rv:16.0)Gecko/20100101Firefox/16.0

(CRLF)

Range:bytes=554554-(CRLF)

Connection:Keep-Alive(CRLF)

(CRLF)

上例第一行表示HTTP客户端(可能是浏览器、下载程序)通过GET方法获得指定URL(www.jianzhandiy.com/index.php)下的文件。

未完...

相关推荐