6.HTTP首部

教也者,长善而就其失者 —《礼记 学记》

HTTP协议的请求和响应报文中都包含首部,本章学习首部的结构与首部中各字段的应用.

1.HTTP报文首部

HTTP报文结构
HTTP协议的请求和响应报文中都包含首部,其为客户端和服务端处理请求和响应提供一些必须的信息.
在HTTP请求报文中,报文由方法,URL,HTTP版本和首部字段构成,HTTP响应报文则由HTTP版本,状态码和首部字段构成.

2.HTTP首部字段

HTTP首部字段传递着重要信息,无论是在请求或是响应中都会使用到,能传递额外重要信息,包括报文主体大小,所使用的语言和认证信息等.首部字段由"字段名: 字段值"构成,字段值可以由一个或多个值组成.

2.1. 四种HTTP首部字段类型

通用首部字段(General Header Fields):请求报文和响应报文都会使用
请求首部字段(Request Header Fields):只有请求报文使用,补充了请求附加内容,客户端信息,响应内容优先等内容
响应首部字段(Response Header Fields):只有响应报文使用,补充了响应附加内容,要求客户端附加额外信息等内容
实体首部字段(Entity Header Fields):针对请求报文和响应报文实体部分使用的首部.

2.2.首部字段一览

通用首部字段
请求首部字段
响应首部字段1
响应首部字段2
响应首部字段3

3. HTTP/1.1 通用首部字段

3.1 Cache-Control

通过规定首部字段Cache-Control的指令,来操作缓存的工作机制.指令的参数可选,且可指定多个参数.
指令一览:
缓存请求
缓存请求(1)
缓存响应

表示是否能够进行缓存的指令

Cache-Control: public 表明其他用户也可使用缓存
Cache-Control: private 只为特定用户使用缓存
Cache-Control: no-cache 防止从从缓存中返回过期资源,若请求报文的首部字段中包含此指令,表示客户端将不会接收缓存过的响应,故而缓存服务器会将请求再转发给源服务器,但有可能缓存响应结果;若是在响应报文中包含此此段,表示缓存服务器不得对响应报文进行缓存.

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

Cache-Control: no-store 规定本地磁盘不得进行任何缓存.

指定缓存期限和认证指令

Cache-Control: max-age=3600 规定了缓存保存时间,若客户端发送请求并判定缓存资源的缓存时间比所指定的小,表示客户端接收缓存中的相应内容,而不需要缓存服务器再将请求转发给源服务器.
Cache-Control: s-maxmessage=3600(s) 功能与max-age相同,但是此指令只适用于公共缓存服务器.
Cache-Control: min-fresh=60 要求缓存服务器返回在缓存时间内(例如3600s)至少还未过指定时间(例如60s)的缓存资源.若缓存资源的剩余时间已不足指定时间(例如60s),则需要再次发送请求更新缓存.
Cache-Control: max-stale=3600:表示即使资源缓存时间(max-age)已过,但只要还在max-stale的指定时间内,照样接收缓存资源.
Cache-Control: only-if-cached 指明只有在缓存服务器目标缓存资源存在的情况下才返回响应.
Cache-Control: must-revalidate 表示代理会向源服务器验证缓存是否有效
Cache-Control: proxy-revalidate 表示缓存服务器会向源服务器验证缓存是否有效
Cache-Control: no-transform 表示缓存不能改变实体媒体内容

3.2 Connection

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

Connection:不再转发的首部字段

管理持久连接

Connection:close 断开服务器和客户端连接,HTTP/1.1协议默认持久连接,但在旧版HTTP协议上默认非持久连接,故想实现持久连接,需使用Connection: keep-alive字段

3.3 Transform-Encoding

规定传输报文时采用的编码方式.

4.HTTP/1.1 请求首部字段

请求首部字段是客户端发往服务端的请求报文中所含有的字段,用于补充请求信息的附加信息,客户端信息等.

4.1 Accept

Accept请求字段
其告诉服务器,用户代理所能处理的媒体类型及优先级,可使用type/subtype形式来指定多种类型.

4.2 Accept-Encoding

Accept-Encoding: gzip,deflate告知服务器用户代理支持的内容编码及优先顺序.

4.3 Host

Host: www.csdn.net其告诉服务器请求的资源所处互联网主机名和端口号,其与单台服务器搭配多个域名的工作机制有很密切联系,也是其必须存在的意义.

4.4 If-Match

形如If-xxx的请求首部字段都是条件请求,服务器在接收到附加条件的请求时必须判断为真才能执行请求.
If-Match
首部字段If-Match值属附带条件之一,其会告诉服务器所匹配资源的实体标记值,此时服务器会对比两者之值,只有完全相同才可执行请求.

4.5 Referer

此首部字段会告知服务器请求的原始资源的URL

4.6 User-Agent

ua
其会将创建的浏览器或代理的信息传达给服务器

5.响应首部字段

响应首部字段是服务器发给客户端的响应报文中出现的首部字段,用来补充响应的附加信息,服务器信息等等.

5.1 Accept-Ranges

Accept-Ranges:bytes其用来告诉客户端服务器是否能用来处理范围请求,若能则是bytes,不能是none

5.2 Location

Location:www.xxx.html其可将响应接收方引导至某个与请求位置不同的资源,基本上该字段会配合3xx重定向响应

5.3 Server

其告诉客户端当前服务器安装的HTTP服务器应用程序的信息

6.实体首部字段

实体首部字段是包含在请求报文和响应报文中的实体部分所使用的的首部,用于补充内容的更新时间和实体的相关内容.

6.1 Content-Type

Content-Type: text/html; charset=UTF-8其说明了实体主体内的对象信息

6.2 Expires

其会将资源失效的时间告诉客户端,在指定时间之前缓存副本会一致被响应

7.为Cookie服务的首部字段

Cookie的工作机制是用户识别及状态管理,网站为管理用户的状态会通过浏览器把一些数据临时写入用户计算机内,当用户再次请求该网站时可通过通信方式取回之前存放的Cookie

Set-Cookie

setcookie
一般属性
secure属性用于限值网页只有在HTTPS安全连接时才可发送Cookie,
HttpOnly属性是cookie的扩展功能,它使js脚本无法获得Cookie.

Cookie

首部字段Cookie会告知服务器,当客户端想获得HTTP状态管理支持时会在请求中加入从服务端获取的一个或多个Cookie值.

8.其他首部字段

HTTP首部字段是可扩展的,除上述一些常用的首部字段外,还会出现一些非标准的首部字段.

X-Frame-Options

其属于响应首部字段,用于控制网站内容在其他网站的Frame标签内的显式问题,主要是为了防止点击劫持攻击.其由两个值,DENY表示拒绝,SAMEORIGIN表示仅同源域名下的页面匹配时允许

X-XSS-Protection

其属于响应首部字段,是针对跨站攻击的一种对策.

DNT

属于请求首部字段,是表示拒绝被精准广告追踪的一种方法

P3P

其属于响应首部字段,可以让网页上的个人隐私变成一种仅供程序可理解的形式从而达到保护用户隐私的目的.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

已忘深色

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

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

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

打赏作者

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

抵扣说明:

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

余额充值