标签:public 压缩 http服务 modified 不一致 nes append UI net
学习HTTP首部的结构和首部中各字段的用法。
使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言、认证信息等内容。
首部字段对应单个HTTP首部可以有多个值。如果首部字段重复,根据浏览器逻辑处理,有的以第一个为准,有的以最后出现的为准。
4种首部字段类型
首部字段一览
在HTTP通信过程中,不限于以下规范中的字段,还有Cookie
、Set-Cookie
、Content-Disposition
等字段。
HTTP首部字段根据缓存代理和非缓存代理的行为,分成2种类型(也可以根据类型分为通用、请求、响应、实体首部字段):
端到端首部(End-to-end Header)
此类别中的首部会转发给请求/响应对应的最终接收目标,且必须保存在由缓存生成的响应中,它必须被转发。
逐跳首部(Hop-by-hop Header)
此类别中的首部只对单次转发有效,会因通过缓存或代理而不再转发。必需要提供Connnection字段才能使用hop-by-hop首部。它们有(除了这些全是端到端首部):
Connection、Keep-Alive、Proxy-Authenticate、Proxy-Authorization、Trailer、TE、Transfer-Encoding、Upgrade
Cache-Control:通过该命令,就能操作缓存的工作机制;参数是多选的,通过,
分隔。
表示能否缓存的指令:
Cache-Control:public
,表明其他用户也可以利用缓存
Cache-Control:private
,只让特定用户缓存,缓存服务器会对该特定用户提供资源缓存的服务。
no-cache
指令:
请求使用时,则表示客户端将不会接收缓存过的响应,于是缓存服务器必须转发给源服务器。
响应使用时,则表示缓存服务器不能缓存资源,源服务器也不对缓存服务器请求中提出的资源有效性进行确认,且禁止其对响应资源进行缓存操作。
控制可执行缓存对象的指令no-store
no-store
指令暗示请求(和对应的响应)中包含机密信息,因此规定缓存不能在本地存储请求或响应的任一部分。
指定缓存期限和认证的指令
max-age=60(秒)
: s-maxage=60(秒)
:功能和max-age指令相同,但s-maxage
只适用于供多位用户使用的公共缓存服务器。即对同一用户重复返回响应的服务器不起作用。使用s-maxage
后,Expires
和max-age
会被忽略。min-refresh=60(秒)
:要求缓存服务器返回至少还未过指定时间的缓存资源。max-stale=60(秒)
:表示缓存资源即使过期,但仍处于该指令指定时间内,仍旧会被客户端接收。如未指定具体数值,则缓存资源一直有效。only-if-cached
:要求缓存服务器不重新加载响应,也不确认资源的有效性,直接返回。若缓存服务器无该缓存,则返回504。must-revalidate
:代理会向源服务器再次验证即将返回的响应缓存目前是否仍然有效。若代理无法连接到源服务器的话,则返回504。使用must-revalidate
时会忽略max-stale
指令。 proxy-revalidate
:限制上与must-revalidate类似.区别在于受体的范围.proxy-revalidate
,是要排除掉用户代理(浏览器)的缓存的.即,其规则并不应用于用户代理的本地缓存上.no-transform
:无论请求还是响应中,缓存都不能改变实体主体的媒体类型,可以防止缓存或代理压缩图片等操作。cache-extension
:通过该指令标记,可以扩展Cache-Control首部字段内的指令。 Connection:
两个作用:
Connection:close
、Connection:Keep-Alive
表示服务端想断开连接或保持持久连接。Date:表明HTTP报文的日期和时间
Progma:no-cache
遗留字段, 只在客户端发送的请求中,要求缓存服务器不返回缓存的资源。Connection:Upgrade
,用于检测是否可使用更高的版本进行通信,可以指定一个完全不同的通信协议。type/subtype
这种形式,一次指定多种媒体类型。gzip
、compress
、deflate
、identity
。Host:虚拟主机运行在同一个IP上,使用Host区分。必须被包含在请求内的首部字段。
形如If-xxx这种请求首部,都可成为条件请求。服务器接收到附带条件的请求后,只有判断指定条件为真时,才会执行请求。
*
指定If-Match值,服务器会忽略ETag值,只要资源存在就处理请求。Max-Forwards:通过Trace或OPTIONS方法,发送包含首部字段Max-Forwards请求时,十进制整数,每转发一次,值减一,为0值,则不再转发,直接返回响应。
TE:trailers
来指明。Accept-Ranges:bytes
和Accept-Ranges:none
。W/
。实体首部字段是在请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间等与实体相关的信息。
实体:作为请求或响应的有效载荷数据被传输,其内容由实体首部和实体主体组成。
Content-Range:bytes5001-10000/10000
Set-Cookie:
name=xxx
Set-Cookie:name=xxx;secure
Set-Cookie:name=xxx;HttpOnly
Cookie:告知服务器,当客户端想获得HTTP状态管理支持时,就会在请求中包含从服务器接收到的Cookie。接收到多个Cookie时,可以以多个Cookie形式发送。
标签:public 压缩 http服务 modified 不一致 nes append UI net
原文地址:http://blog.csdn.net/u014099894/article/details/61406772