HTTP协议基础讲解

从基础概念到实际应用的HTTP协议知识

什么是HTTP?

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于在计算机网络之间传输超文本和其他资源的应用层协议。它是万维网(World Wide Web)的基础,使得浏览器和服务器之间可以进行数据交换。

HTTP使用请求-响应模型:客户端(如浏览器)发送请求,服务器返回响应。这种简单的模型使得HTTP易于实现和使用,同时也具有很好的扩展性。

HTTP基础概念

核心特点

URL结构

URL(Uniform Resource Locator)是资源在互联网上的地址,一个完整的URL包括以下部分:

https://www.example.com:8080/path?name=value#section
部分 说明 示例
协议 通信协议 https
域名 服务器地址 www.example.com
端口 服务器端口号 8080(HTTP默认80,HTTPS默认443)
路径 资源路径 /path
查询参数 传递给服务器的参数 name=value
片段 页面内的位置标记 #section

HTTP请求与响应

请求结构

HTTP请求由三部分组成:请求行、请求头和请求体。

GET /api/users HTTP/1.1 Host: www.example.com User-Agent: Mozilla/5.0 Accept: application/json {"name": "张三", "age": 25}

响应结构

HTTP响应也由三部分组成:状态行、响应头和响应体。

HTTP/1.1 200 OK Content-Type: application/json Content-Length: 128 Server: Apache/2.4 {"users": [{"id": 1, "name": "张三"}, {"id": 2, "name": "李四"}]}
HTTP请求响应模型

HTTP方法

HTTP方法定义了对资源的操作类型,常用的HTTP方法包括:

方法 描述 特点 示例场景
GET 获取资源 幂等、可缓存、参数在URL中 查看文章、搜索结果
POST 提交数据 非幂等、不可缓存、参数在请求体中 用户注册、提交表单
PUT 更新资源 幂等、完整替换 更新用户信息
DELETE 删除资源 幂等 删除文章、取消订单
PATCH 部分更新 非幂等 修改用户头像
HEAD 获取头部信息 类似GET但无响应体 检查资源是否存在
OPTIONS 获取支持的方法 - CORS预检请求
HTTP方法类型

HTTP状态码

HTTP状态码是服务器返回给客户端的三位数字代码,用于表示请求的处理结果。状态码分为5个类别:

1xx - 信息性状态码

表示请求已接收,需要继续处理。

2xx - 成功状态码

表示请求已成功处理。

3xx - 重定向状态码

表示需要客户端进一步操作才能完成请求。

4xx - 客户端错误状态码

表示客户端的请求有错误,服务器无法处理。

5xx - 服务器错误状态码

表示服务器在处理请求时发生了错误。

HTTP状态码分类

HTTP版本演进

HTTP/0.9(1991年)

最早的HTTP版本,非常简单,只支持GET方法,没有头部信息,只能传输HTML文本。

HTTP/1.0(1996年)

引入了多种请求方法(GET、POST、HEAD)、头部字段、状态码等概念,支持传输多种类型的数据。

HTTP/1.1(1997年)

目前使用最广泛的版本,引入了持久连接(Keep-Alive)、管道化请求、虚拟主机、缓存控制等特性。

HTTP/2(2015年)

基于SPDY协议,引入了二进制分帧、多路复用、头部压缩、服务器推送等特性,大幅提升了性能。

HTTP/3(2020年)

基于QUIC协议,使用UDP作为传输层,解决了TCP的队头阻塞问题,支持0-RTT连接建立、连接迁移等特性。

HTTP版本对比