1.HTTP请求方式
归类 | 方法 | 作用 |
常用 | GET | 请求从服务器获取资源 |
POST | 向服务器提交数据 | |
HEAD | 类似于GET请求,只不过不会返回实体数据,只获取报头 | |
PUT | 替换服务器的内容 | |
不常用 | DELETE | 请求服务器删除指定的资源 |
TRACE | 对链路进行测试或诊断 | |
OPTIONS | 列出可对资源实行的操作方法,Allow字段里返回 | |
CONNECT | 要求服务器和另一台服务器建立连接,充当代理 | |
拓展 | MKCOL,COPY,MOVE,LOCK,UNLOCK,PATCH |
2.HTTP请求格式
请求头部为请求报文添加了一些附加信息,由“名/值”对组成,每行一对,名和值之间使用冒号分隔
Accept-Charset | 通知服务端可以发送的编码格式 |
Accept-Encoding | 通知服务端可以发送的数据压缩格式 |
Accept-Language | 通知服务端可以发送的语言 |
Referrer | 通知服务器是通过哪个页面或资源链接到当前请求的资源。 |
Accept | 通知服务器能够处理哪些媒体类型的响应。 |
User-Agent | 发送请求的应用程序名称 |
Host | 接受请求的服务器地址,可以是IP:端口号,也可以是域名 |
Connection | 指定与连接相关的属性,如Connection:Keep-Alive |
3.HTTP响应格式
HTTP响应格式由3部分组成,分别为:协议版本,状态码,状态码描述,之间由空格分隔状态代码为3位数字,200~299的状态码表示成功,300~399的状态码指资源重定向,400~499的状态码指客户端请求出错,500~599的状态码指服务端出错(HTTP/1.1向协议中引入了信息性状态码,范围为100~199)
状态码 | 说明 |
200 | 响应成功 |
301 | 永久重定向,搜索引擎将删除源地址,保留重定向地址 |
302 | 当服务器接收到请求后,暂时改变请求的目标地址,并将这个新地址通过HTTP响应头中的Location属性返回给客户端。客户端在收到这个响应后,会自动向新的URL发起请求。 搜索引擎的判定,复杂的URL可能会被其他网站使用更简洁的URL,并通过302重定向进行劫持。这意味着人在访问某个复杂URL时,搜索引擎可能会将其引导到一个简单的、伪装成原始链接的地址,从而影响搜索引擎的索引和排名。这种情况可能会导致流量丢失或意外引导用户到不相关的页面。 |
304 | 缓存文件并未过期,还可继续使用,无需再次从服务端获取 |
400 | 客户端请求有语法错误,不能被服务器识别 |
403 | 服务器接收到请求,但是拒绝提供服务(认证失败) |
404 | 请求资源不存在 |
500 | 服务器内部错误 |
server | 服务器应用程序软件的名称和版本 |
Content-Type | 响应正文的类型(图片或二进制字符串) |
Content-Charset | 响应正文使用的编码 |
Content-Encoding | 响应正文使用的数据压缩格式 |
4.HTTP特点
1.请求应答模式
HTTP采用请求应答模式,这意味着通信的基本交互模式是由客户端发送请求和服务器响应组成。具体特点包括:
-
请求:客户端(通常是浏览器或应用程序)向服务器发送请求,这个请求包含了所需资源的地址(URL),请求方法(如GET、POST、PUT、DELETE等)以及其他信息(如请求头部)。
-
应答:服务器在接收到请求后处理该请求,并返回一个响应。响应中通常包含状态码(表示请求的结果,如200表示成功,404表示未找到等)、响应头(提供关于响应的元数据)和响应体(实际的资源内容,如HTML文档、JSON数据等)。
-
通信过程中的单向性:客户端需要发起请求,服务器不会主动向客户端发送数据,除非是客户端先发送请求。
2.灵活可拓展
HTTP具有灵活性和可拓展性,使它能够适应不同的应用场景和需求。
-
灵活性:HTTP的设计允许开发人员根据需求自由定义和扩展请求和响应的格式。HTTP头部可以携带自定义字段,支持多种内容类型(如HTML、JSON、XML等),能够满足不同应用的需求。
-
可拓展性:HTTP协议本身也可以通过版本迭代来扩展,例如HTTP/1.1、HTTP/2、HTTP/3等版本提供了新的特性和性能改进。此外,HTTP协议通常与其他技术和协议(如WebSocket、RESTful架构、GraphQL等)结合使用,使得系统能够随着负载增加而有效扩展,支持更多的用户和更大的数据流。
3.可靠传输
虽然HTTP本身不是一个传输协议,但它通常在TCP(传输控制协议)之上工作,TCP提供了可靠的传输机制。
-
数据完整性:TCP实现了数据包的顺序传输,确保数据完整到达接收方。即使某些数据包在网络中被丢失或损坏,TCP也能通过重传机制来确保数据的完整性。
-
流量控制:TCP会根据网络流量状况动态调整数据传输速率,从而避免网络拥塞,保证了服务质量。
-
确认机制:TCP使用确认应答机制,在发送数据后,会等待接收方的确认。如果在指定时间内没有收到确认信号,TCP会自动重传该数据包。
4.无状态stateless
无状态是HTTP的一个重要特点,表示服务器在处理每个请求时不会保留任何关于之前请求的信息。
-
独立请求:由于每个请求是独立的,服务器不会存储客户端的状态信息,这意味着每个请求都携带所有必要的信息,服务器通过请求中的数据进行处理,这样设计使得服务器更容易扩展和维护。
-
简化设计:无状态的设计简化了服务器的实现,因为服务器不需要保存和管理会话状态,因此可以更有效地处理大量独立请求,减少了服务器的内存消耗。
-
提高可靠性:如果某个请求失败,其他请求不受影响,因为它们是完全独立的。无状态的特性使得负载均衡和分布式计算变得更加容易,因为请求可以被路由到任何可用的服务器节点。
HTTP传输的这四个特点使其成为现代Web架构中的核心协议,支持了丰富的应用和服务。这个模式的灵活性和可扩展性,加上数据传输的可靠性,确保了用户体验的顺畅和系统的高效运行。