← 返回首页
📡

HTTP协议详解

📂 devops ⏱ 1 min 186 words

HTTP协议详解

什么是HTTP

HTTP(HyperText Transfer Protocol,超文本传输协议)是Web应用的基础协议,用于客户端和服务器之间的通信。

HTTP请求

请求结构

请求方法 URL 协议版本
请求头字段: 值
...

请求体

请求方法

方法 说明 特点
GET 获取资源 幂等,无副作用
POST 提交数据 非幂等
PUT 更新资源 幂等
DELETE 删除资源 幂等
HEAD 获取响应头 不返回响应体
OPTIONS 查询支持的方法 CORS预检

常见请求头

Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html,application/json
Content-Type: application/json
Authorization: Bearer token123
Cache-Control: no-cache
Cookie: session=abc123

HTTP响应

响应结构

协议版本 状态码 状态描述
响应头字段: 值
...

响应体

状态码分类

状态码 类别 说明
1xx 信息 请求已接收,继续处理
2xx 成功 请求已成功处理
3xx 重定向 需要额外操作
4xx 客户端错误 请求有误
5xx 服务器错误 服务器处理失败

常见状态码

状态码 说明 使用场景
200 成功 请求成功
201 已创建 资源创建成功
301 永久重定向 URL永久变更
302 临时重定向 URL临时变更
304 未修改 使用缓存
400 错误请求 参数错误
401 未授权 需要认证
403 禁止访问 权限不足
404 未找到 资源不存在
500 服务器错误 服务器异常
502 网关错误 上游服务异常
503 服务不可用 服务过载或维护

HTTP/1.1 vs HTTP/2

HTTP/1.1特点

HTTP/2特点

HTTPS

HTTPS = HTTP + SSL/TLS,提供加密传输:

客户端 -> 服务器: 请求建立SSL连接
服务器 -> 客户端: 返回证书
客户端: 验证证书,生成随机密钥
客户端 -> 服务器: 用公钥加密的随机密钥
后续通信: 使用对称加密

实践:使用curl测试HTTP

# 发送GET请求
curl https://api.example.com/users

# 发送POST请求
curl -X POST https://api.example.com/users \
  -H "Content-Type: application/json" \
  -d '{"name": "John", "email": "john@example.com"}'

# 查看响应头
curl -I https://example.com

# 跟随重定向
curl -L https://example.com

# 使用HTTP/2
curl --http2 https://example.com

总结

HTTP是Web运维的基础协议。理解请求响应模型、状态码和各种头部字段,对于诊断Web问题和优化性能至关重要。