http请求中必须具备哪个字段_读书笔记《图解HTTP》:HTTP首部

1、HTTP报文首部

首部内容为客户端和服务器分别处理请求和响应提供所需要的信息

HTTP请求报文

a748a2102f4497da6169ff3d7625edda.png

HTTP响应报文

da8b0a9bee5fc4cc1ec727f3e762bc2b.png

在报文众多的字段当中,HTTP首部字段包含的信息最为丰富。

首部字段同时存在于请求和响应报文内,并涵盖HTTP报文相关的内容信息。

2、HTTP首部字段

2.1 HTTP首部字段传递重要信息

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

2.2 HTTP首部字段结构

字段名 + : + 字段值(可以有多个) 如 报文主体的对象类型:Content-Type:text/html

2.3 4种HTTP首部字段类型

通用首部字段(请求报文和响应报文读会使用的首部)

请求首部字段(请求报文 补充请求的附加内容、客户端信息、相应内容相关优先级等信息)

响应首部字段(响应报文 补充响应的附加内容,也会要求客户端附加额外的内容信息 )

实体首部字段 (响应和请求报文的实体部分使用的首部 补充了资源内容更新的时间等与实体有关的信息)

2.4 HTTP/1.1 首部字段一览

HTTP/1.1 47种首部字段 这是通用首部字段

0351faeff38cf5000b66ecd4fb310495.png

2.5 非HTTP/1.1 首部字段

Cookie Set-Cookie Content-Disposition等

3、HTTP/1.1 通用首部字段

3.1 Cache-Control

操作缓存的工作机制。

表示能否缓存的指令:public、private、no-cache

控制可执行缓存的对象的指令:no-store

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

s-maxage(用于供多位用户使用的公共缓存服务器、max-age、min-fresh(要求缓存服务器返回至少还未过指定时间的缓存资源)、max-stale(缓存即使过期也照常接收)、only-if-cached(仅在缓存服务器本地缓存目标资源的情况下才会要求其返回)、must-revalidate(代理会向源服务器再次获取有效资源的话,缓存必须给客户端一条504状态码)、proxy-revalidate(必须再次验证缓存的有效性)、no-transform(缓存不能改变实体主体的媒体类型)

3.2 Connection

两个作用:控制不再转发给代理的首部字段(Connection:首部字段名)、管理持久连接(close、Keep-Alive)HTTP/1.1 默认为持久连接

3.3 Date(创建HTTP报文的日期和时间

3.4 Pragma

(历史遗留字段,向后兼容而定义,形式唯一 pragma:no-cache,只用在发送请求中)

3.5 Trailer

会事先说明在报文主体后记录了哪些首部字段,应用在分块传输编码时(值:Expires)

3.6 Transfer-encoding

传输报文主体时采用的编码方式,传输编码方式仅对分块传输编码有效(值:chunked)

3.7 Upgrade

用于检测HTTP协议及其他协议是否可使用更高的版本进行通信(值:其他通信协议)

使用它时,还需要Connection的值被指定为Upgrade

3.8 Via

追踪客户端与服务器之间的请求和响应报文的传输路径。经过代理时,会在Via中附加该服务器的信息。还可以避免请求回环的发生。经常和TRACE方法一起使用。

3.9 Warning

告知用户一些与缓存想相关的问题的警告

aeb0755c19fdb8039983951e6463ae58.png

cc867b9e02e0e58294bf40ccc5e92e42.png

4、请求首部字段

4.1 Accept

用户代理能够处理的媒体类型及媒体类型的相对优先级,可一次性指定多个(媒体类型:文本、图片、视频、应用程序使用的二进制)

Accept: text/html, application/xhtml+xml, application/xml; q=0.9,*/*;q=0.8

给显示的媒体类型增加优先级,使用q=来额外表示权重值,服务器提供多种内容时,优先返回权重值最高的媒体类型。

4.2 Accept-Charset

通知服务器用户代理支持的字符集及字符集的相对优先顺序,可一次性指定多个。

4.3 Accept-Encoding

告知服务器,用户大力支持的内容编码及内容编码的优先级顺序。可一次性指定多种。

gzip、compress、deflate、identify

4.4 Accept-Language

告知服务器用户代理能够处理的自然语言集,及优先级,可一次指定多个

4.5 Authorization

告知服务器用户代理的认证信息。

4.6 Expect

期望出现的某种特定行为

4.7 From

告知服务器使用用户代理的用户的电子邮件地址

4.8 Host

虚拟主机运行在同一个IP上,因此使用Host加以区分。

其他:if-Match、 if-Modified-Since、 if-None-Match、 if-Range、 if-Unmodified-Since、 Max-Forwards、 Proxy-Authorization、 Range、 Referer、 TE、 User-Agent

5、响应首部字段

5.1 Accept-Range

告知客户端服务器是否能处理范围请求,字段值为bytes或none

5.2 Age

告知客户端,源服务器在多久前创建了响应。字段值单位为秒。

若是缓存服务器,则是指缓存后的响应再次发起认证到认证完成的时间值。代理创建响应时必须加上首部字段Age。

5.3 Etag

告知客户端实体标识。是一种可将资源以字符串形式做唯一标识的方式。服务器会为每份资源分配对应的ETag值。

强ETag值,不论实体发生多么细微的变化都会改变其值。弱ETag值只用于提示资源是否相同

5.4 Location

将响应接收方式引导至某个与请求URI位置不同的资源。配合3XX:Redirection的响应,提供重定向的URI。

5.5 Proxy-Authenticate

会把由代理服务器所要求的认证信息发送给客户端

5.6 Retry-After

告知客户端应该在多久以后再次发送请求,配合状态码503或3XX:Redirection一起使用。

5.7 Server

当前服务器上安装的HTTP服务器应用程序的信息。

5.8 Vary

只能对相同自然语言(Accept-Language)的请求返回缓存

5.9 WWW-Authenticate

用于HTTP访问认证。它会告知客户端适用于访问请求URI所指定资源的认证方案(Basic或Digest)和带有参数提示的质询(challenge)。状态码401中肯定有这个字段。

6、实体首部字段

用于补充内容的更新时间等与实体相关的信息。

在请求和响应两方的HTTP报文中都含有与实体相关的首部字段。

6.1 Allow

用于通知客户端能够支持Request-URI指定资源的所有HTTP方法。收到不支持的HTTP方法时,会以状态码405作为响应返回。

6.2 Content-Encoding

告知客户端服务器对实体的主体部分选用的内容编码方式

(gzip、compress、delfate、identify)

6.3 Content-Language

告知客户端实体主体使用的自然语言

6.4 Content-Length

实体主体部分的大小(单位字节)

6.5 Content-Location

给出与报文主体部分相对应的URI。和首部字段location不同,Content-Location表示的是报文主体返回资源对应的URI。

6.6 Content-MD5

客户端会对接收的报文主体执行相同的MD5算法,然后与首部字段Content-MD5的字段值比较。

对报文主体执行的MD5短发获得的128位二进制数,再通过Base64编码后将结果写入Content-MD5字段值。

由于HTTP首部无法记录二进制值,所以要通过Base64编码处理。

14bcc7eac6a101b6be01cf9f90bc517a.png

6.7 Content-Range

告知客户端作为响应返回的实体的哪个部分符合范围要求,字段值以字节为单位。表示当前发送部分及整个实体大小。

6.8 Content-Type

实体主体内对象的媒体类型。

6.9 Expires

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

6.10 Last-Modified

资源最终修改的时间

7、为Cookie服务的首部字段

Cookie的工作机制是用户识别及状态管理。

7.1 Set-Cookie

8629d4b7110cc453655679a2a12b6723.png

7.2 Cookie

Cookie:status=enable

当客户端想获得HTTP状态管理支持时,就会在请求中包含从服务器接收到的Cookie。

8、其他首部字段

HTTP首部字段是可以自行扩展的。

8.1 X-Frame-Options

属于HTTP响应首部,用于控制网站内容在其他Web网站的Frame标签内的显示问题。

DENY: 拒绝,SAMEORIGIN:仅同源域名下的页面匹配时许可

8.2 X-XSS-Protection

属于HTTP响应首部,针对跨站脚本攻击(XSS)的一种对策,用于控制浏览器XSS防护机制的开关。0:无效,1:有效。

8.3 DNT

属于请求首部,Do Not Track的简称,拒绝个人信息被收集。是表示拒绝被精准广告追踪的一种方法。0:同意被追踪,1:拒绝被追踪

8.4 P3P

属于响应首部,在线隐私偏好平台的简称。可以让Web网站上的个人隐私变成一种仅供程序可理解的形式,以达到保护用户隐私的目的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值