目录
一、HTTP概述
全称:超文本传输协议(HyperText Transfer Protocol)
功能:用于在客户端(如浏览器)和服务器之间传输超文本数据(如HTML文档)。
工作原理:基于请求响应模型,客户端发送请求,服务器返回响应。
二、HTTP的版本
HTTP/0.9:最初版本,仅支持GET请求,传输简单的HTML文档。
HTTP/1.0:引入了状态码、请求头和响应头,支持更多请求方法。
HTTP/1.1:当前广泛使用的版本,支持持久连接、分块传输等特性。
HTTP/2:引入了二进制分帧、多路复用等技术,提高了传输效率。
HTTP/3:基于QUIC协议,进一步减少延迟和提高安全性。
三、HTTP请求
1.请求方法
- GET:请求指定资源,数据通过URL传递。
- POST:向服务器提交数据,数据在请求体中。
- PUT:更新指定资源。
- DELETE:删除指定资源。
- HEAD:获取响应头,不返回响应体。
- OPTIONS:查询服务器支持的请求方法。
2.请求头
包含客户端信息、请求类型、接受的内容类型等,常见头部有:
- `Host`:请求的主机名。
- `UserAgent`:客户端软件信息。
- `Accept`:可接受的内容类型。
- `ContentType`:请求体的数据类型。
四、HTTP响应
1.状态码
指示请求的处理结果。
- 1xx:信息性状态码(如100 Continue)。
- 2xx:成功状态码(如200 OK)。
- 3xx:重定向状态码(如301 Moved Permanently)。
- 4xx:客户端错误状态码(如404 Not Found)。
- 5xx:服务器错误状态码(如500 Internal Server Error)。
2.响应头
包含服务器信息、响应类型、缓存控制等。
常见头部:
- `ContentType`:响应体的数据类型。
- `ContentLength`:响应体的长度。
- `SetCookie`:设置客户端Cookie。
五、HTTP持久连接
HTTP/1.1默认使用持久连接,允许在同一连接上发送多个请求和响应,减少连接建立的开销。
Connection头:可以通过`Connection: keepalive`来保持连接。
六、缓存机制
1.CacheControl
用于控制缓存行为的响应头(如是否缓存、缓存的持续时间、以及缓存的隐私设置)。
no-cache
: 强制要求缓存重新验证。private
: 表示响应仅可以被用户的浏览器缓存。public
: 表示响应可以被任何缓存区缓存。max-age=<seconds>
: 指定资源的最大有效时间,单位为秒。no-store
: 不缓存任何内容。
2.ETag
资源的唯一标识符,用于判断资源是否被修改。
- 当客户端请求资源时,服务器返回资源及其ETag。
- 客户端在下次请求时可以使用
If-None-Match
头部,携带上次的ETag。 - 如果资源没有变化,服务器返回304 Not Modified响应,客户端可以继续使用缓存的版本。
3.LastModified
资源最后修改的时间,可以帮助客户端判断资源是否需要更新。
- 服务器在响应中发送Last-Modified头部,表示资源的最后修改时间。
- 客户端可以在后续请求中使用
If-Modified-Since
头部,携带上次的修改时间。 - 如果资源自那时以来没有变化,服务器返回304 Not Modified响应。
七、安全性
HTTP本身是不提供加密的(明文传输),所以数据在传输过程中可能会出现被窃取或篡改的情况。
八、使用场景
网页浏览:这种是最常见的。
API通信:RESTful API通常会使用HTTP进行数据交换。
文件下载:通过HTTP协议来下载文件。
总结
HTTP是一种用在客户端和服务器之间传输超文本数据的应用层协议,允许用户通过访问网页和其他资源。它本身是一个无状态的协议(每个请求都是独立的,就是说服务器是不会记住之前的请求状态,我们需要使用其他的机制来管理用户状态),而且数据在传输过程中是明文的,容易被窃听和篡改。
标签:知识点,缓存,HTTP,请求,响应,http,资源,客户端 From: https://blog.csdn.net/weixin_61742549/article/details/141901505