1. HTTP 概述
- HTTP(Hypertext Transfer Protocol):
- 用途:Web浏览器与Web服务器之间通信的基础协议。
- 工作模式:基于客户端-服务器架构,通过请求-响应模型进行通信。
- 特点:无状态协议,每次请求独立;默认端口号:80;基于TCP/IP的高级协议;
2. HTTP与HTTPS
- HTTP:不加密,传输速度快,适用于大多数Web应用,但易受中间人攻击。
- HTTPS:通过SSL/TLS加密传输数据,确保数据安全,但有略微的性能开销。
3. HTTP 请求
3.1 请求方法
方法 | 描述 |
---|---|
GET | 请求资源,不修改服务器状态。数据附加在URL中,长度有限制。 |
POST | 向服务器提交数据,通常用于表单提交、文件上传。数据包含在请求体中。 |
PUT | 上传资源,若已存在则替换。 |
DELETE | 请求删除指定资源。 |
HEAD | 类似GET,但只请求响应头。 |
OPTIONS | 查询服务器支持的请求方法。 |
PATCH | 对资源进行部分更新。 |
3.2 请求结构
-
请求行:包含请求方法、请求URL和HTTP版本。
-
请求头(Headers):
- 常见请求头:
请求头 描述 Host 目标服务器域名。 User-Agent 客户端浏览器信息。 Accept 客户端可接受的媒体类型。 Content-Type 发送数据的格式。 Authorization 用于HTTP认证的凭据。 Cookie 客户端存储的会话信息。
- 常见请求头:
-
请求空行:就是用于分割POST请求的请求头
-
请求体(Body):包含在POST、PUT等请求中的数据,如表单信息、文件等。
4. HTTP 响应
4.1 响应状态码
状态码 | 含义 | 详细描述 |
---|---|---|
200 | OK | 请求成功,服务器返回请求的资源。 |
301 | Moved Permanently | 资源已永久移动到新URL。 |
400 | Bad Request | 请求语法错误,服务器无法处理。 |
401 | Unauthorized | 需要身份验证。 |
403 | Forbidden | 无权限访问。 |
404 | Not Found | 请求的资源未找到。 |
500 | Internal Server Error | 服务器内部错误。 |
502 | Bad Gateway | 网关错误。 |
503 | Service Unavailable | 服务不可用。 |
4.2 响应结构
-
状态行:协议版本、状态码、状态描述。
-
响应头(Headers):
- 常见响应头:
响应头 描述 Content-Type 响应内容的媒体类型。 Content-Length 响应体的长度。 Cache-Control 指定缓存机制。 Set-Cookie 服务器设置的Cookie,用于会话管理。 Location 重定向时的新URL。
- 常见响应头:
-
响应空行:就是用于分割POST请求的请求头
-
响应体(Body):实际返回的数据,如HTML文档、JSON等。
5. HTTP 状态保持
- 无状态协议:HTTP不会自动保存请求的状态。
- 状态保持机制:
- Cookie:客户端保存的会话信息。
- Session:服务器端保存的用户会话信息。
- Token:常用于API认证的Token技术。
6. HTTP/2 特性
- 二进制分帧:减少解析开销。
- 多路复用:通过一个TCP连接处理多个请求。
- 头部压缩:减少传输的头部信息量。
- 服务器推送:服务器预先发送资源。
7. HTTP 性能优化
- 减少请求数:合并文件、使用图像精灵。
- 启用压缩:使用Gzip或Brotli压缩响应体。
- 缓存控制:合理使用缓存。
- 使用CDN:通过CDN将内容缓存到离用户更近的服务器。