上一篇
http请求消息头及应用案例
- 行业动态
- 2025-04-28
- 2398
HTTP请求头含Host、User-Agent等字段,用于标识客户端与资源,应用如User-Agent判断设备类型,Content-Type定义数据格式,Cookie传递会话信息,实现个性化
HTTP请求消息头及应用案例
HTTP请求头
HTTP请求头(Request Headers)是客户端向服务器发送请求时附带的一组键值对,用于传递客户端环境、请求参数、资源标识等信息,服务器通过解析请求头,可以获取客户端信息、控制请求行为或返回特定资源。
常见HTTP请求头字段
请求头字段 | 作用 | 示例 |
---|---|---|
Host | 指定目标服务器的域名(必填) | Host: example.com |
User-Agent | 标识客户端类型(浏览器、操作系统、版本等) | User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) |
Accept | 告知服务器可处理的响应内容类型 | Accept: text/html,application/json;q=0.9 |
Content-Type | 描述请求体的数据格式(如POST提交数据) | Content-Type: application/json |
Authorization | 携带认证凭证(如Bearer Token) | Authorization: Bearer <token> |
Cookie | 发送服务器存储的Cookie信息 | Cookie: sessionId=abc123; userId=789 |
Referer | 表示请求来源的URL(隐私敏感) | Referer: https://example.com/page |
Origin | 发起请求的源站点(用于跨域请求) | Origin: https://example.com |
Cache-Control | 控制缓存行为(如禁用缓存) | Cache-Control: no-cache |
Range | 指定请求资源的某个范围(用于断点续传) | Range: bytes=1000-2000 |
Accept-Language | 优先语言列表 | Accept-Language: zh-CN,zh;q=0.8,en;q=0.6 |
If-Modified-Since | 仅请求更新后的资源 | If-Modified-Since: Wed, 21 Oct 2023 07:28:00 GMT |
典型应用案例
跨域请求(CORS)
- 场景:前端向不同域名的API发起请求。
- 涉及请求头:
Origin
:声明请求来源。Access-Control-Allow-Origin
(响应头):服务器允许的来源。
- 示例:
GET /api/data HTTP/1.1 Host: api.example.com Origin: https://mysite.com
- 说明:服务器通过
Access-Control-Allow-Origin
决定是否允许跨域。
文件上传(Multipart Form-Data)
- 场景:通过POST提交表单上传文件。
- 涉及请求头:
Content-Type: multipart/form-data
Boundary
(分隔符,自动生成)。
- 示例:
POST /upload HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
- 说明:
multipart/form-data
支持二进制数据传输,常用于文件上传。
缓存控制(Cache-Control)
- 场景:强制浏览器不缓存资源(如动态数据)。
- 涉及请求头:
Cache-Control: no-cache
Pragma: no-cache
(兼容旧版浏览器)。
- 示例:
GET /data HTTP/1.1 Cache-Control: no-cache
- 说明:服务器返回
200
但附加Must-Revalidate
,确保每次请求都重新验证。
API鉴权(Bearer Token)
- 场景:调用需要身份验证的API接口。
- 涉及请求头:
Authorization: Bearer <token>
- 示例:
GET /user/profile HTTP/1.1 Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...
- 说明:服务器验证Token有效性后返回用户数据。
断点续传(Range)
- 场景:下载大文件时从中断位置继续。
- 涉及请求头:
`Range: bytes=