【图解HTTP】| 【05】HTTP首部详解

索引

【图解HTTP】|【01】简单了解HTTP协议
【图解HTTP】|【02】HTTP报文内的HTTP信息
【图解HTTP】|【03】返回结果的HTTP状态码
【图解HTTP】|【04】与HTTP协作的Web服务器(代理、网关、隧道)
【图解HTTP】|【05】HTTP首部详解
【图解HTTP】|【06】确保web安全的HTTPS
【图解HTTP】|【07】确认访问用户身份的认证
【图解HTTP】|【08】基于HTTP的功能追加协议
【图解HTTP】|【09】Web的攻击技术

1、HTTP报文首部

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

请求报文

在这里插入图片描述

响应报文

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

在这里插入图片描述

2、HTTP首部字段

首部字段传递重要信息

【首部字段】请求和响应都会使用到,能够起到额外重要信息的作用;
	为了给浏览器和服务器提供报文主体大小,等信息;

HTTP首部字段结构

首部字段名: 字段值;

【若首部字段重复】:
- 会优先处理最后出现的首部字段;

4种HTTP首部字段类型

【通用首部字段】:请求报文和响应报文都会使用;
【请求首部报文】:从clent向服务器发送请求报文时使用的首部;
【响应首部字段】:从服务器向client返回相应报文时使用的首部;
【实体首部字段】:针对请求报文和响应报文的实体部分使用的首部;

HTTP/1.1首部字段
【通用首部字段】:
在这里插入图片描述
【请求首部字段】:
在这里插入图片描述
【响应首部字段】:
在这里插入图片描述
在这里插入图片描述
【实体首部字段】:
在这里插入图片描述
End-to-end首部和Hop-by-hop首部

首部字段将定义成缓存代理和非缓存代理:
【端到端首部End-to-end】:
	首部会转发给请求/响应对应的最终接收目标,且必须保存在缓存生成的响应种,必须被转发;
【逐跳首部Hop-by-hop】:
	首部只对单词转发有效,会因通过缓存或代理而不再转发;
	使用该首部需要使用Connection字段;
	【首部字段】:除了以下其余都为端到端首部;
		- Connection;
		- Keep-Alive;
		- Proxy-Authenticate;
		- Proxy-Authorization;
		- Trailer;
		- TE;
		- Transfer-Encoding;
		- Upgrade;

3、HTTP/1.1通用首部字段

3.1 Cache-Control
指定首部该字段即可操作缓存的工作机制;
	参数为可选,使用,分隔;

缓存请求指令
在这里插入图片描述
在这里插入图片描述
缓存响应指令
在这里插入图片描述

3.2 Connection
该字段的作用:
	- 控制不再转发给代理的首部字段;
		格式【Connection: 不在转发的首部字段名】;
	- 管理持久连接;
		格式【Connection: close】【Connection: Keep-Alive】;
3.3 Date
创建HTTP报文的日期和时间;
3.4 Pragma
【Pragma: no-cache】
通用首部字段,但只用在客户端发送请求中,要求所有中间服务器不返回缓存的资源;
3.5 Trailer
该字段会事先说明再报文主体后记录了那些首部字段;
3.6 Transfer-Encoding
该字段规定了传输报文主体时采用的编码格式;
3.7 Upgrade
用于检测HTTP协议及其他协议是否可使用更高的版本通信,该参数值可用来指定完全不同的通信协议 ;
该字段仅作用的Upgrade对象仅限于客户端和邻接服务器;
使用该字段还需要指定【Connection: Upgrade】

在这里插入图片描述

3.8 Via
为了追踪客户端与服务器之间的请求和响应报文的传输路径,且能避免请求回环的发生;

在这里插入图片描述

3.9 Warning
会告知用户一些与缓存相关的问题的警告;
	格式:【Warning: [警告码][警告的主机:端口号] "[警告内容]" ([日期时间])】

在这里插入图片描述
在这里插入图片描述

4、请求首部字段

从客户端往服务端发送请求报文中所使用的字段,用于补充请求的附加信息、客户端信息等;
4.1 Accept
该字段可通知服务器,用户代理能够处理的媒体类型以及相对优先级;
【文本文件】:
	text/html, text/plain, textcss……
	application/xhtml+xml, application/xml……
【图片文件】:
	image/jpeg, image/gif, image/png……
【视频文件】:
	video/mpeg, video/quicktime……
【应用程序使用的二进制文件】:
	application/octet-stream, application/zip……
优先级使用q=来表示,用分号进行分隔;
4.2 Accept-Charset
可用来通知服务器用户代理支持的字符集和其相对优先顺序;
	如:Accept-Charset: iso-8859-5,unicode-1-1;q=0.8
4.3 Accept-Encoding
告知服务器用户代理支持的内容编码及内容编码的优先级顺序;
【gzip】:
	由文件压缩程序gzip生成的编码格式采用Lempel-Ziv算法及32位循环冗余校验;
【compress】:
	由UNIX文件压缩程序compress生成的编码格式,采用LZW算法;
【deflate】:
	组合使用zlib格式及由deflate压缩算法生成的编码格式;
【identity】:
	不执行压缩或不会变化的默认编码格式;
4.4 Accept-Language
用来告知服务器用户代理能够处理的自然语言集;
	如:Accept-Language: zh-cn, zh;q=0 .7 ,en-us, en;q=0.3;
4.5 Authorization
用来告知服务器,用户代理的认证信息;
4.6 Expect
用来告知服务器,期望出现的某种特定行为;
4.7 From
用来告知服务器使用用户代理的用户的电子邮件地址;
	使用代理时,应尽可能包含From首部字段;
4.8 Host
告知服务器,请求资源所处的互联网主机名和端口号;

在这里插入图片描述

4.9 If-Match
条件请求,服务器接收到附带条件,只有判断指定条件为真,才执行;
	可使用*指定该字段值,服务器将会忽略ETag值;
4.10 If-Modified-Since
告知服务器若该字段值早于资源的更新时间,则希望能处理该请求;
用于确认代理或客户端拥有的本地资源的有效性;
4.11 If-None-Match
在Get或HEAD中使用该字段可获取最新的资源;
4.12 If-Range
告知服务器若指定的该字段值和请求资源的ETag值或时间相一致时,则作为范围请求处理;
4.13 If-Unmodified-Since
该字段用来告知服务器,指定的请求资源只有在字段值内指定的日期时间后,为更新的情况下,才能处理请求;
4.14 Max-Forwards
通过TRACE或OPTIONS方法,发送含首部字段Max-Forwards请求,该字段以整数形式指定可经过服务器的最大数目;
	下一个服务转发请求前,Max-Forwards的值减1后重新赋值,当为0时,则不进行转发,之间返回响应;
	防止请求陷入代理之间的循环;
4.15 Proxy-Authorization
接收从代理服务器发来的认证质询时,客户端会发送包含该字段的请求,以告知服务器认证所需的信息;
	该认证行为发送再客户端与代理之间;
4.16 Range
对于只需获取部分资源的范围请求,包含首部字段Range即可告知服务器资源的指定范围;
	接收附带range首部字段请求的服务器,会处理请求后返回206,若无法处理该范围,则返回200;
4.17 Referer
告知服务器请求的原始资源的URI

在这里插入图片描述

4.18TE
告知服务器客户端能够处理响应的传输编码方式以及相对优先级;
4.19 User-Agent
该字段将会创建请求的浏览器和用户代理名称等信息传递给服务器;

5、响应首部字段

服务器向客户端返回响应报文所使用的字段,用于补充响应附加信息、服务器信息、以及对客户端的附加要求等;
5.1 Accept-Ranges
告知客户端服务器是否能处理返回请求,以指定获取服务器端某个部分的资源;
	字段值:【bytes,none】
5.2 Age
告知客户端,源服务器再多久(秒)前创建了响应;
	若创建该响应的是缓存服务器,则Age是指缓存后的响应再次发起认证到认证完成的时间值;
	代理创建响应时,必须加上该字段;
5.3 ETag
告知客户端实体标识,以字符串形式做唯一标识;
	服务器会为每一份资源分配对应的ETag值,当资源更新,其也会更新;
	【强ETag】:不论实体发生多细微的变化都会改变其值;
	【弱ETag】:只要用于提示资源是否相同,只有资源发生了根本改变,产生差异时才会改变ETag值(会再开始处加上W/);
5.4 Location
该字段将响应接收方引导至某个与请求URI位置不同的资源;
5.5 Proxy-Authenticate
由服务器所要求的认证信息发生给客户端;
5.6 Retry-After
告知客户端应多久之后再次发起请求;
5.7 Server
告知客户端当前服务器上安装的HTTP服务器应用程序的信息;
	如:server: Apache/2.2.6 (Unix) PHP/5.2.5;
5.8 Vary
当代理服务器接收到带有Varv字段指定获取资源的请求时,弱使用的Accept-Language字段的值相同,则直接从缓存返回响应;
	反之需要先从源服务器获取资源后才能作为响应返回;
该字段能够对缓存进行控制,源服务器会像代理服务器传达关于本地缓存使用方法的命令;
	若对相同资源发起请求,但该字段值不同,则必须从源服务器重新获取资源;
5.9 WWW-Authenticate
用于HTTP访问认证,告知客户端用于访问请求URI指定资源的认证方案和带参数提示的质询;

6、实体首部字段

包含再请求报文和响应报文中的实体部分所使用的首部,用于补充内容的更新时间与实体相关的信息;
6.1 Allow
用于通知客户端能够支持Request-URI指定资源的所有HTTP方法;
6.2 Content-Encoding
会告知客户端服务器对实体的主体部分选用的内容编码方式;
6.3 Content-Language
告知客户端,实体主体使用的自然语言;
6.4 Content-Length
告诉实体部分的大小;
	当对实体主体内容进行编码传输时,不能再使用Content-Length首部字段;
6.5 Content-Location
标识报文主体返回资源对应的URI;
6.6 Content-MD5
由MD5算法生成的值,用于检查报文主体再传输过程中是否保持完整,以及确认传输到达;
【过程】:对报文主体执行MD5算法获得的128位二进制数再通过Base64编码后将结果写入该字段值,由于HTTP首部无法记录二进制,
	所以要通过 Base64编码处理。为确保报文的有效性,作为接收的客户端会对该主体再次执行一个相同的MD5算法;
【缺点】:
	- 对内容上的偶发性改变无法查证;
	- 无法检测恶意篡改;

6.7 Content-Range
告知客户端作为响应返回的实体的哪个部分符合范围请求;
6.8 Content-Type
说明了实体主体内对象的媒体类型;
6.9 Expires
会将资源失效的日期告知客户端;
	缓存服务器再收到含该字段的响应后,会以缓存来应答请求,该字段指定的时间前,响应的副本会一直本保存,若超过后,请求会被转向源服务器;
6.10 Last-Modified
指明资源最终修改的时间(即Request-URI指定资源被修改的时间);
6.11 为Cookie服务的首部字段
Cookie机制时用户识别及状态管理;为了管理用户的状态会通过Web浏览器,将数据临时写入用户的计算机内当用户访问该web将其取出校验;

在这里插入图片描述

6.12 Set-Cookie
当服务器准备开始管理客户端状态时,会事先告知各种信息;

在这里插入图片描述
在这里插入图片描述

【expires】:该属性指定浏览器可发送的Cookie的有效期;
		若省略该属性时,其有效性仅限于维持浏览器会话时间段内(浏览器关闭前);
		可通过覆盖已过期的Cookie,事先对客户端Cookie的实质性删除操作;
【path】:用于限定指定Cookie的发送方位的文件目录;
【domain】:指定域名可做到结尾匹配一直;
	如,当指定example.com后,除example.com以外,www.example.com或www2.example.com 等都可以发送 Cookie;
【secure】:用于限制web页面仅在HTTPS安全链接才可发送Cookie;
【HttpOnly】:是Cookie的扩展功能,使得js脚本无法获取Cookie;
	位了防止跨站脚本攻击对Cookie的信息窃取;
6.13 Cookie
会告知服务器,当客户端要获得HTTP状态管理支持时,就会在请求中包含从服务器接收到的Cookie;

7、其他首部字段

7.1 X-Frame-Options
属于HTTP响应首部,用于控制网站内容在其他web网站的Frame标签内的显示问题;
- 【DENY】:拒绝;
- 【SAMEORIGIN】:仅同源域名下的页面匹配时许可;
7.2 X-XSS-Protection
属于响应首部,是针对跨站脚本攻击的一种对策,用于控制浏览器XSS防护机制的开关;
- 0:将XSS过滤设置成无效状态;
- 1:将XSS过滤设置成有效状态;
7.3 DNT
属于HTTP请求首部,是拒绝个人信息被收集;
- 0:同意被追踪;
- 1:拒绝被追踪;
7.4 P3P
可让Web网站上的个人隐私变成一种仅供程序可理解的形式,来保护隐私;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jxiepc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值