前端开发人员也是需要了解各种网络协议的,下面是关于HTTP消息头部信息的解读。
通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。客户端向服务器发送一个请求,请求包含请求的方法、URL、协议版本、以及包含请求修饰符、客户信息和内容的类似于MIME(邮件组织结构)的消息结构。服务器以一个状态行作为响应,相应的内容包括消息协议的版本,成功或者错误编码加上包含服务器信息、实体元信息以及可能的实体内容。
HTTP协议定义了很多与服务器交互的方法,最基本的有四种,分别是GET、POST、PUT、DELETE。一个URL地址用于描述一个网络上的资源,而HTTP中的GET、POST、PUT、DELETE就对应着对这个资源的查、改、增、删4个操作,我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
HTTP头部信息解读
HTTP的头部包括通用头、请求头、响应头和实体头四个部分。每个头域由一个域名,冒号(:)和值域三部分组成。
通用头部是客户端和服务器都可以使用的头部,可以在客户端、服务器和其他应用程序之间提供一些非常有用的通用功能,如Date头部。
请求头部是请求报文特有的,他们为服务器提供了一些额外信息,比如客户端希望接受什么类型的数据,如Accept头部。
响应头部便于客户端提供信息,比如,客户端在与哪种类型的服务器进行交互,如Server头部。
实体头部指的是用于应对实体主体部分的头部,比如,可以用实体头部来说明实体主体部分的数据类型,如Content-Type头部。
HTTP通用头
通用头包含请求和响应消息都支持的头域,通用头域包含缓存头部Cache-Control、Pragma及信息性头部Connection、Date、Transfer-Encoding、Update、Via。
1、Cache-Control
Cache-control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各消息中的指令含义如下:
no-cache:指示请求或响应消息不能缓存,实际上是可以存储在本地缓存区中的,只是在与原始服务器进行新鲜度验证之前,缓存不能将其提供给客户端使用。
no-store:缓存应该尽快从存储器中删除文档的所有痕迹,因为其中可能会包含敏感信息。
max-age:缓存无法返回缓存时间长于max-age规定秒的文档,若不超过规定秒浏览器将不会发送对应的请求到服务器,数据由缓存直接返回;超过这一段时间才进一步由服务器决定是否返回新数据还是仍由储存提供。若同时还发送了max-stale指令,则使用期可能会超过其过期时间。
min-fresh:至少在未来规定秒内文档要保持新鲜,接受其新鲜生命期大于其当前Age跟min-fresh值之和的缓存对象。
max-stale:指示客户端可以接收过期响应消息,如果指定max-stale消息的值,那么客户端可以接收过期但在指定值之内的响应消息。
only-if-cached:只有当缓存中有副本存在时,客户端才会获得一份副本。
public:指示响应可被任何缓存区缓存,可以用缓存内容回应任何客户。
private:指定对于单个用户的整个或部分响应消息,不能被共享缓存处理,只能用缓存内容回应先前请求该内容的那个用户。