作者:手机用户2502940165 | 来源:互联网 | 2023-06-23 19:04
概述本文将针对HTTP协议结构进行讲解,主要使用HTTP1.1版本。HTTP协议用于客户端和服务器端之间的通信通过请求和响应的交换达成通信请求报文是由请求方法、请求URI、协议版本
概述
本文将针对HTTP协议结构进行讲解,主要使用HTTP/1.1版本。
HTTP协议用于客户端和服务器端之间的通信
通过请求和响应的交换达成通信
请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成的。
接收到请求的服务器,会将请求内容的处理结果以响应的形式返回。
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
HTTP是保存状态的协议
- HTTP是一种不保存状态,即无状态(stateless)协议。HTTP协议自身不对请求和响应之间的通信状态进行保存。也就是说在HTTP这个级别,协议对于发送过的请求或响应都不做持久化处理。
- 使用HTTP协议,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快的处理大量事务,确保协议的可伸缩性,而特意把HTTP协议设计成如此简单。
- 可是,随着Web的不断发展,因无状态而导致业务处理变得棘手的情况增多了。比如,用户登录到一家购物网站,即使他跳转到该站其他页面后,也需要能继续保持登录状态。针对这个实例,网站为了能够掌握是随送出的请求,需要保存用户的状态。
HTTP/1.1虽然是无状态协议,但是为了实现期望的保持状态功能,于是引入了COOKIE技术。有了COOKIE再用HTTP协议通信,就可以管理状态了。
告知服务器意图的HTTP方法
GET:获取资源
POST:传输实体主体
POST方法用来传输实体的主体。
虽然用GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是用POST方法。虽说POST的功能与GET很相似,但是POST的主要目的并不是获取响应的主体内容。
PUT:传输文件/修改内容
PUT方法可以用来传输文件,或者用来设计修改内容的接口。
HEAD:获得报文首部
HEAD方法与GET方法一样,只是不返回报文主体部分,直返会响应头。用于确认URI的有效性及资源更新的日期时间等。
DELETE:删除文件
DELETE方法用来删除文件,是与PUT相反的方法。DELETE方法按请求URI删除指定的资源。
OPTIONS:询问支持的方法
OPTIONS方法用来查询针对请求URI指定的资源支持的方法。
TRACE:追踪路径
- TRACE方法是让Web服务器端将之前的请求通信返回给客户端的方法。
- 发送请求时,在Max-Forwards首部字段中填入数值,每经过一个服务器端就将该数字减1,当数值刚好减到0时,就停止继续传输,最后接收到请求的服务器端则返回状态码 200 OK的响应。
- 客户端通过TRACE方法可以查询发送出去的请求是怎样被加工修改/篡改的。这是因为,请求想要连接到源目标服务器可能会通过代理中转,TRACE方法就是用来确认连接过程中发生的一系列操作。
- 但是,TRACE方法本来就不怎么常用,再加上它容易引发XST(Cross-Site Tracing)攻击,通常就更不会用到了。
CONNECT:要求用隧道协议连接代理
CONNECT方法要求在于代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。主要使用SSL(Secure Sockets Layer,安全套接层)和TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输。
CONNECT方法的格式如下所示。