http要点(2)

学习笔记

Posted by 溜大虾 on September 12, 2017

Http首部字段

Http首部字段是构成报文的要素之一。使用首部字段是为了给浏览器和服务器提供报文主体大小、所使用的语言,认证信息等内容。

Http首部字段结构

首部字段名:字段值

常见Http首部字段

通用首部字段:

1.Cache-Control:控制缓存行为。常用指令如下:

缓存请求指令 参数 说明
no-cache 强制向服务器再次验证
no-store 不缓存请求或响应的任何内容
max-age = 秒 必须 响应的最大age值
max-stale = 秒 可省略 接收已将过期的响应
min-fresh = 秒 必须 期望在指定时间内的响应仍然有效
no-transform 代理不可更改媒体类型
noly-if-cached 从缓存获取资源
cache-extension - 新指令标记(token)
缓存响应指令 参数 说明
public 可像任意方提供响应的缓存
private 可省略 仅向特定用户返回响应
no-cache 可省略 缓存前必须先确认其有效性
no-store 不缓存请求或响应的任何内容
no-transform 代理不可更改媒体类型
must-revalidate 可缓存但必须再向源服务器进行确认
proxy-revalidate 要求中间缓存服务器对缓存响应的有效性再进行确认
max-age = 秒 必须 响应的最大age值
s-maxage = 秒 必须 公共缓存服务器响应的最大age值
cache-extension - 新指令标记(token)

2.Connection:控制不再转发给代理的首部字段和管理持久连接。

  • 控制不再转发给代理的首部字段格式: Connection:不再转发的首部字段
  • 管理持久连接格式:Connetion:close

3.Date:表明创建HTTP报文的日期和时间。

  • HTTP/1.1协议使用在RFC1123中规定的日期时间格式。例如:Date: Tue,03 Jul 2012 04:40:59 GMT
  • HTTP/1.1之前的版本使用RFC850中定义的格式。例如:Date: Tue,03 - Jul - 2012 04:40:59 GMT

4.Transfer-Encoding:规定传输报文主题时的编码方式。HTTP/1.1的传输编码方式仅对分块传输编码有效。

请求首部字段

1.Accept 该首部字段会通知服务器客户端能够处理的媒体类型和媒体类型的优先级,可以采用type/subtype这样的形式。
例如

  • 文本文件:text/html,text/plain。text/css等等。
  • 图片文件:image/jpeg,image/gif,image/png等等。
  • 视频文件:video/mpeg等等
  • 应用程序使用的二级文件: applictiaon/octet,application/zip等 若想要给显示媒体加优先级,可以使用q=来额外表示权值,用分号进行分割。权重值的范围为0~1,1为最大值。

2.Accept-Charset 该首部字段可用来通知服务器用户代理支持的字符集及字符集的相对优先顺序,同样用q来表示优先级。

3.Accept-Encoding 该首部字段迎来告知服务器用户代理支持的编码内容及优先级顺序,可一次性指定多种内容编码。

4.Accept-Language 该首部字段用来告知服务器用户代理支持的语言字符集及优先顺序,同样使用q来表示优先级。

5.Authorization 该首部字段用来告知服务器用户代理的认证信息。

6.Expect 该首部字段用来告知服务器,客户端期待服务器做出某种特定的行为。如果服务器无法理解客户端的期望而做出响应会返回417 Expectation Failed.

7.Host 该首部字段告知服务器请求资源的主机名和端口号。

8.If-xx 该样式类型的字段可称为请求条件,只有当服务器判断请求条件为真时才会执行请求。

9.Range 对资源进行范围请求

10.Referer 该首部字段告知服务器请求的原始资源URI。

11.User-Agent 该首部字段会将创建请求的浏览器和用户代理名称传给服务器。

响应首部字段

1.Accept-Ranges 该首部字段用于告知客户端服务武器是否能处理范围请求。字段值有两种,可以处理时为bytes,反之为none。

2.Age 该首部字段告知客户端,源服务器在多久前创建了响应,字段值单位为毫秒。

3.ETag

  • 该首部字段能告知客户端实体标识。它是一种可将资源以字符串形式做唯一性标识的方式。服务器会为每份资源分配对应的ETag值。
  • 当资源更新时,ETag的值也会更新。生成新的ETag值。
  • 仅凭URI指定缓存的资源是相当困难的。若下载过程中出现连接中断,再连接的情况,都会依照ETag来指定资源。
  • ETag有强弱之分,强ETag值无论实体发生多么细微的变化都会改变其值。

4.Location 该首部字段可以将响应请求接收方式引导至某个与请求URI位置不同的资源。该字段基本上会配合3xx使用。

5.Sever 该首部字段用来告知客户端当前服务器安装的HTTP服务器应用程序的信息。

实体首部字段

实体首部字段用来告知实体内容的相关信息。

1.Allow 该首部字段用来告知客户端服务器所支持的Request-URI指定资源的所有HTTP方法。如果服务器收到不支持的HTTP方法,则会返回405状态码。与此同时还会把支持的HTTP方法返回。

2.Content-Encoding 首部字段会告知实体主体内容的编码方式。内容编码是指在不丢失尸体信息的前提下所进行的压缩。主要的四种内容编码方式:

  • gzip
  • compress
  • deflate
  • identity

3.Content-Language 该首部字段告知客户端实体主体使用的语言。

4.Content-Length 该首部字段表明实体主体的大小。

5.Content-Location 该字段给出报文主体返回资源对应的URI。

6.Content-MD5 客户端会对接收的报文主体进行相同的MD5算法,然后与首部字段Content-MD5的字段值进行比较。用来验证主体内容是否被更改。

7.Content-Range 针对范围请求,返回响应时使用Content-Range。能告知客户端作为响应返回的实体的哪个部分符合范围请求。