http深入

http深入,第1张

http深入

首部字段:包含请求和响应的各种条件和属性的各类首部,一般有4种首部,分别是:通用首部、请求首部、响应首部和实体首部。

一、http通用首部

1.1 Cache-Control字段

1.1.1 表示是否能缓存的指令

  • public
Cache-Control: public

公共的,表示所有人都可以用的缓存

  • private
Cache-Control: private

私有的,表示响应只以特定的用户作为对象

  • no-cache
Cache-Control: no-cache

意思是不接受过期缓存,为的是防止从缓存中获取过期数据。

  1. 客户端发送时携带:表示客户端将不会接受缓存过的响应,所以缓存服务器就必须将请求传递给源服务器。
  2. 服务端发送时携带:表示缓存服务器不能对数据进行缓存,
Cache-Control: no-cache=Location

如果no-cache指定了参数,那这个参数就不能使用缓存。

注:no-cache不是代表不缓存,而是不用过期缓存。

1.1.2 控制可执行缓存的对象的指令

  • no-store 
Cache-Control: no-store

该指令是真正的不缓存。

1.1.3 指定缓存期限和认证的指令

  • s-maxage
Cache-Control: s-maxage=6400(单位:秒)

 s-maxage和max-age类似,它适用于多用户使用的公共缓存服务器,使用s-maxage指令后,max-age及Expires指令将被忽略。

  • max-age
Cache-Control: max-age=6400(单位:秒)

判断数据的缓存资源比指定数值小,则返回缓存数据,否则将请求发送给源服务器。

使用max-age时,缓存服务器将不再对数据的有效性进行确认,且Expries指令将被忽略。

  • min-fresh
Cache-Control: min-fresh=60(单位:秒)

要求缓存服务器返回至少还未超过指定时间的缓存资源。

  • max-stale
Cache-Control: max-stale=3600(单位:秒)

 如果未指定参数,那么无论过多久,客户端都会接受到响应。如果指定了参数,那么即使资源过了有效期,但仍处于指定时间内,也会被客户端接收。

  • must-revalidate
Cache-Control: must-revalidate

 使用该指令后,代理会向源服务器再次确认响应的缓存是否有效。且max-stale指令将被忽略。

  • proxy-revalidate
Cache-Control: proxy-revalidate

 要求缓存服务器在返回响应之前再次确认缓存资源的有效性。

  • no-transform
Cache-Control: no-transform

 使用该指令无论是在请求或者响应中,缓存都不能改变实体主体的媒体类型,可以防止缓存或者代理压缩图片类似的 *** 作。

1.2 Connection字段

1.2.1 控制不在转发给代理的首部字段

Connection: 不再转发的字段

 控制不再转发给代理的首部字段。

1.2.1 管理持久链接

  • close 断开链接
Connection: close

服务器断开链接。

  • Keep-Alive保持链接
Connection: Keep-Alive

服务器保持链接。

1.3 Date字段

date表明创建http报文的时间和日期

1.4 Pragma字段

  • Pragma编译报文指令 

是HTTP/1.1 之前版本保留的历史遗留字段,仅作为与HTTP/1.0 的向后兼容而定义。 

发送的请求会同时含有下面两个首部字段:

Cache-Control: no-cache;
Pragma: no-cache

 1.5 trailer字段

  • trailer 说明在报文主体后记录哪些首部字段 

1.6 Transfer-Encoding字段

  • Transfer-Encoding 规定了在传输报文主体时采用哪种编码方式

1.7 Upgrade字段 

  • Upgrade 用于检测http协议及其他协议能否使用更高版本的协议,其参数可以是完全不同的协议 

1.8 Via字段 

  • Via 为了追踪客户端与服务器之间的请求和响应报文的传输路径 

还可以避免请求回环的发生。所有必须在经过代理时附加该首部字段内容。 

1.9 Warning字段 

  • Warning 该首部通常会告知用户一些与缓存相关的问题或者警告。
  • 警告码列表
警告码警告内容说明110Response is stale (响应已过期)代理返回已过期的资源111Revalidation failed (再验证失败)代理再验证资源有效性时失败(服务器无法到达等原因)112Disconnection operation (断开连接 *** 作)代理与互联网连接被故意切断113Heuristic expiration (试探性过期)响应的使用期超过24小时(有效缓存的设定时间大于24小时的情况下)199Miscellaneous warning (杂项警告)任意警告内容214Transformation applied(使用了转换)代理对内容编码或媒体类型等执行了某些处理时299Miscellaneous persistent warning(持久杂项警告)任意的警告内容 二、http请求首部字段

2.1 Accept字段 

  • Accept 首部字段通知服务器,用户代理能够处理的媒体类型以及媒体类型的相对优先级。 

2.1.1 文本文件类型

 text/*和application/*

2.1.2 图片文件类型

image/*

2.1.3 视频文件类型

video/*

2.1.4 应用程序使用的二进制文件

application/*

要给显示的媒体添加优先级,则用q=*来表示权重,用;表示分隔,q的范围是0-1,当服务器返回多种内容时会首先返回权重最高的媒体类型。

2.2 Accept-Charset 字段

  • Accept-Charset 首部字段可以通知服务器代理所支持的字符集和字符集的相对优先级。 

2.3 Accept-Encoding 字段

  • Accept-Encoding 首部字段可以通知服务器代理所支持的编码形式和编码形式的相对优先级。 

2.4 Accept-Language 字段

  • Accept-Language 首部字段可以通知服务器代理所支持的语言和语言的相对优先级。 

2.5 Authorization 字段

  • Authorization 用来告诉服务器,用户代理的认证信息。 

2.6 Expect 字段 

  • Expect 是客户端用来告知服务器,期望出现的某种特定行为。 
2.7 From 字段
  •  From 是用来告知服务器用户代理的用户电子邮箱地址。

2.8 Host 字段 

  • host 是用来告知服务器,请求资源所处的互联网主机名和端口号 

2.9 If-Match 字段 

  •  形如 If-XXX 这样的请求首部字段,都可以称为条件请求,服务器接收到条件请求后,只有条件判定为真时,才会执行请求。
  • 只有If-Match的字段值跟ETge值匹配一致时,服务器才会处理这个请求。

2.10 If-Modified-Since 字段

  •  如果If-Modified-Since指定的时间后,资源发生了更新,服务器就会接收请求。

2.11 If-None-Match 字段

  •  只有If-None-Match与ETge值匹配不一致时,服务器才会处理这个请求。

2.12  If-Range 字段

  • If-Range 字段值若是跟ETge值或者更新日期时间一致,则作为范围请求处理。若不一致,则忽略范围请求,返回全部资源。

2.13 If-Unmodified-Since 字段

  • 如果If-Unmodified-Since 指定的时间后,资源未发生更新,服务器才会接收请求。 

 2.14 Max-Forwards 字段

  • Max-Forwards 指定可经过的服务器最大数量

 2.15 Proxy-Authorization 字段

  • Proxy-Authorization 告诉代理服务器认证所需要的信息

2.16 Range 字段

  • Range 包含所需获取的资源的范围的请求,可告知服务器所需获取资源的指定范围。 

2.17 Referer 字段

  •  Referer包含发起请求的url

2.18 TE 字段 

  • TE 会告知服务器客户端可以接收的响应的传输编码方式以及相对优先级 

 2.19 User-Agent 字段

  • User-Agent会将创建请求的浏览器和用户代理名称等信息传递给服务器。
三、http响应首部字段 

3.1 Accept-Ranges 字段 

  • Accept-Range 用来告知客户端服务器能否进行范围请求,以指定获取资源的哪个部分。 

3.2 Age 字段 

  • Age 能告知告知客户端,服务器在多久前创建了响应,单位为秒。

3.3 ETge 字段 

  • ETge 能够告诉客户端实体标识,是一种可以将资源以字符串形式做唯一标识的方式。 

3.3.1 强ETge 不论实体发生多细微的变化都会改变标识

3.3.2 弱ETge 只用于提示资源是否相同,只有在资源发生了根本性的改变时才会改变其值。 

3.4 Localtion 字段

  • Localtion字段可以将响应接收方引导至某个与请求方不同的URI,常用于重定向。

3.5 Proxy-Authenticate 字段

  •  Proxy-Authenticate 会把代理服务器所要求的认证信息发送给客户端。

3.6 Retry-After 字段

  • Retry-After 告诉客户端应该在多久之后再次发送请求。

3.7 Server 字段 

  • Server 告知客户端当前服务器上安装的http服务器应用程序信息。 

3.8 Vary 字段 

  • Vary 对缓存进行控制,原服务器会向代理服务器传递本地缓存方法使用的指令。 

3.9 WWW-Authenticate 字段

  • WWW-Authenticate 用于HTTP的访问认证,它会告诉客户端适用于访问请求URI所指定资源的认证方案和带参数提示的质询。
四、http实体首部字段 

4.1 Allow 字段 

  • Allow 用于通知客户端能支持Request-URI指定资源的所有HTTP方法

4.2 Content-Encoding 字段

  •  Content-Encoding 会告知客户端服务器对实体主体所选用的编码方式。主要有:gzip、compress、deflate、identify

4.3 Content-Language 字段

  •  Content-Language 会告知客户端,实体主体所用的语言。

4.4 Content-Length 字段

  • Content-Length 表明了实体主体部分的大小。 

4.5 Content-Location 字段

  •  Content-Location 给出与报文主题部分相对应的URI

4.6  Content-MD5 字段

  • Content-MD5 用来检查报文主体在传输过程中是否保持完整以及是否送达 

4.7 Content-Range 字段 

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

4.8 Content-Type 字段 

  • Content-Type 说明实体主体内对象的媒体类型 

4.9 Expires 字段

  • Expires 告知客户端资源失效的日期 

4.10 Last-Modified 字段 

  • Last-Modified 指明资源的最终修改时间 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5687284.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存