图解HTTP协议(二)

简介: 一、HTTP报文首部结构:报文首部+空行(CR+LF)+报文主体HTTP请求报文:由方法(get,post等)+URI+HTTP版本(http1.

一、HTTP报文首部

结构:报文首部+空行(CR+LF)+报文主体

HTTP请求报文:由方法(get,post等)+URI+HTTP版本(http1.1)+http首部字段(请求首部字段,通用首部字段,实体首部字段)组成

HTTP响应报文:由 HTTP版本,状态码(200 OK 数字和原因语句),HTTP首部字段(响应首部字段,通用首部字段,实体首部字段)组成

4中首部类型:

    通用首部字段:Cache-control =>控制缓存行为   VIA:代理服务器的相关信息  Pragma:报文指令(Pragma:no-cache)等

    实体首部字段:Allow: 资源可支持的HTTP方法  Content-Encoding:实体主题适用的编码方式 Expires:实体主题过期时间   Last-Modified:资源的最后修改日期

 1.通用首部字段

(1)Cache-control :no-cache的含义是分两种情况:

目的是:防止从缓存中返回过期的资源。

   一、 客户端发送的请求中如果包含no-cache指令,则表示客户端将不会接受缓存过的响应。于是,“中间”的缓存服务器必须把客户端请求转发给资源服务器。

    二、服务器返回的响应中包含以后也将不再对缓存服务器请求中提出的资源有效性进行确认,且禁止对其响应资源进行缓存控制。

(2)Cache-control :public指令:则明确表明其它用户也可以利用缓存

(3)Cache-control :private指令:响应只以特定的用户作为对象,缓存服务器会对特定用户提供资源缓存的服务,对于其它用户发过来的请求,代理服务器则不会缓存。

(4)Cache-control :no-store表示不能在本地存储请求或者响应的任一部分。

(5)s-maxage指令:只适用于供多位用户使用的公共缓存服务器,优先级高于Expires和max-age指令,加入缓存小于这个时间那么就接受缓存。如果max-age=0那么直接将请求转发给源服务器。


Connection首部字段:

作用:①控制不再转发给代理的首部字段②管理持久连接:http1.1是默认持久连接。若要关闭,则使用Connection:close

Date字段:表示创建HTTP报文的日期和时间

Transfer-Encoding规定了传输报文主体时,采用的编码方式。

Upgrade:用于检测HTTP协议及其他协议是否可使用更高的版本通信,其参数可以用来指定一个完全不同的通信协议。

via:为了追踪客户端与服务器之间的请求与响应报文传输路径。报文经过代理或网关,会先在首部字段Via中附加该服务器的信息,然后再进行转发。不仅可以追踪报文,还可以避免请求回环发生。

Warning:

 2. 请求首部字段

请求首部字段主要是从客户端往服务器发送请求报文中所使用的字段,用于补充请求附加信息,客户端信息,对响应内容相关的优先级等内容。

Host:告知服务器,请求资源所处的互联网主机名和端口号

Referer:告知服务器请求的原始资源的URI

USER-AGENT:

TE:告知服务端客户端能够处理响应的传输编码方式以及相对优先级

Accept:通知服务器,用户代理能够处理的媒体类型及媒体类型的相对优先级。可使用type/subtype这种形式,以此制定多种媒体类型。

Accept-Charset:通知服务器用户代理支持的字符集,及优先顺序

Accept-Encoding:告知服务器用户代理支持的内容编码及内容编码的优先级顺序。(gzip,compress等)

Accept-Language:告知服务器用户代理能够处理的自然语言集,及优先级

Authorization:用来告知服务器,用户代理的认证信息(证书值)

Except:告知服务器,期望出现的某种特定的行为

From:告知服务器使用用户代理的用户电子邮件地址。目的就是显示搜索引擎等用户代理人的负责人的电子联系方式

IF-Match:条件请求

Max-Forwards:通过Trace方法或者Opions方法,发送包括首部字段Max-Forwards请求时,指定经过服务器最大数目。服务器往下一个服务器转发请求之前,会将Max-Forwards的值减1后重新赋值。当值为0后就不再转发。

3.响应首部字段

(1)Accept-Ranges:告知客户端是否处理范围请求,以指定获取服务端某个部分的资源。当可处理范围请求时值为bytes,反之则指定为none;

(2)Age,告知客户端,源服务器在多久前创建了响应。字段的值为秒。

(3)Etag:告知客户端实体标识。它是一种资源可以将字符串形式做唯一标识的方式。例如资源被缓存时,就会分配唯一标示,同一个网站的中英文版本,就会有不同的标识。

(4)强Etag和弱Etag:

强Etag:不论实体发生多么微妙的变化都会改变其值。弱Etag:只是用于提示资源是否相同。只有资源发生根本改变时,才会改变Etag值。字段值最开始处会附加/w

(5)location:将响应的接收方引导至某个请求URI位置不同的资源。会配合3XX:重定向响应;

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

(7)Retry=After:告知客户端应该在多久之后再次发送请求。配合503或者3XX,字段值可以是具体日期,或者秒

(8)Server:告知客户端当前服务器上安装HTTP服务器应用程序的信息。

(9)Vary:可对缓存进行控制,原服务器会向代理服务器传达关于本地缓存使用方法命令,从代理服务器接受到源服务器返回包含Vary指定项的响应之后,若要再进行缓存,仅对请求中含有相同Vary指定的首部字段的请求返回缓存,即使对相同的资源,但由于指定的首部字段不同,因此必须从源服务器获取;例如Vary:Accept-Language,就只能对保持相同Accept-Language值的请求返回缓存。

(10)WWW-Authenticate:用于HTTP访问认证。告知客户端适用于访问请求URI所指定资源的认证方案(Basic和Digest)和带参数提示的质询。

4.实体首部字段:

(1)Allow:用于告知客户端能够支持Request-URI指定资源的所有HTTP方法。,当服务器收到不支持的HTTP方法会以状态码405 作为响应返回,同时还会将支持的HTTP方法写入首部字段Allow后返回。

(2)Content-Ecoding:告知客户端服务器对实体的主体部分选用的内容编码方式。内容编码:是指不丢失实体信息下的进行压缩。

(3)Content-Language:告知客户端的实体使用的自然语言,中文 英文……

(4)Content-Length:表明实体的大小,单位为字节。当对主体内容进行详细的编码的时候,就不在使用该字段了。

(5)Content-Location:给出报文主体部分相对应的URI。和首部字段Location不同,Content-LOCATION表示报文主体返回资源对应的URI(比如访问http://baidu.com,返回的对象却是http://baidu.com/index.html)

(6)Content-MD5:一串由MD5算法生成的值,其目的在于检查报文主体在传输过程中是否完整,以及确认传输到达。 

(7)Content-range:针对请求范围,返回响应时使用的首部字段Content-Range,能告知客户端作为响应返回实体的哪个部分符合范围的请求,字段值,以字节为单位,表示当前发送部分及整个实体大小。

(8)Content-type:说明实体内对象的媒体类型。和首部Accept一样,字段值有type/subtype形式赋值。

(9)Expires:将资源失效日期告知到客户端。缓存服务器在接收到含有首部字段Expires的响应之后,会以缓存来应答请求

(10)Last-Modified:指明资源最终修改时间。

Cookie服务的首部字段:

工作机制,用户状态及状态管理

set-cookie:开始状态管理所使用的Cookie信息,响应首部字段

cookie:服务器接收到的Cookie,请求首部字段


相关文章
|
1月前
|
缓存 应用服务中间件 网络安全
Nginx中配置HTTP2协议的方法
Nginx中配置HTTP2协议的方法
79 7
|
23天前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
51 11
|
24天前
|
Dubbo 安全 应用服务中间件
Apache Dubbo 正式发布 HTTP/3 版本 RPC 协议,弱网效率提升 6 倍
在 Apache Dubbo 3.3.0 版本之后,官方推出了全新升级的 Triple X 协议,全面支持 HTTP/1、HTTP/2 和 HTTP/3 协议。本文将围绕 Triple 协议对 HTTP/3 的支持进行详细阐述,包括其设计目标、实际应用案例、性能测试结果以及源码架构分析等内容。
|
23天前
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
35 8
|
24天前
|
安全 应用服务中间件 Linux
判断一个网站是否使用HTTPS协议
判断一个网站是否使用HTTPS协议
33 4
|
1月前
|
算法 网络协议 安全
HTTP/2 协议的缺点是什么?
HTTP/2 协议的缺点是什么?
|
1月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
84 3
|
1月前
|
网络协议 安全 Go
Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
【10月更文挑战第28天】Go语言进行网络编程可以通过**使用TCP/IP协议栈、并发模型、HTTP协议等**方式
51 13
|
1月前
|
传感器 缓存 网络协议
CoAP 协议与 HTTP 协议的区别
CoAP(Constrained Application Protocol)协议是为资源受限的设备设计的轻量级协议,适用于物联网场景。相比HTTP,CoAP具有低功耗、低带宽占用和简单易实现的特点,支持多播通信和无连接的交互模式。
|
1月前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】

热门文章

最新文章