HTTP请求头与响应头 #
什么是HTTP请求头和响应头? #
HTTP(超文本传输协议)是Web通信的基础协议,它使用请求-响应模型。在HTTP通信中,请求头和响应头是HTTP消息的重要组成部分,它们包含了关于请求或响应的元数据信息。
HTTP请求头(Request Headers) #
HTTP请求头是客户端(如浏览器)发送给服务器的HTTP请求中的头部信息。它们提供了关于客户端、请求内容、期望的响应格式等信息。请求头帮助服务器理解如何处理请求。
HTTP响应头(Response Headers) #
HTTP响应头是服务器发送给客户端的HTTP响应中的头部信息。它们提供了关于服务器、响应内容、缓存策略、安全策略等信息。响应头帮助客户端理解如何处理接收到的响应。
HTTP头字段的分类 #
HTTP头字段可以根据其功能分为以下几类:
- 通用头字段(General Headers):适用于请求和响应消息
- 请求头字段(Request Headers):仅适用于请求消息
- 响应头字段(Response Headers):仅适用于响应消息
- 实体头字段(Entity Headers):描述消息体内容的元数据
HTTP请求头完整列表 #
通用请求头字段 #
| 头字段 | 说明 | 示例值 |
|---|---|---|
Cache-Control |
控制缓存行为,指定缓存机制 | max-age=3600, public |
Connection |
控制网络连接,如保持连接或关闭 | keep-alive |
Date |
请求消息创建日期时间 | Tue, 15 Nov 2022 08:12:31 GMT |
Pragma |
HTTP/1.0向后兼容的缓存控制 | no-cache |
Upgrade |
请求升级到其他协议 | HTTP/2.0, SHTTP/1.3 |
Via |
请求经过的代理服务器信息 | 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
专用请求头字段 #
| 头字段 | 说明 | 示例值 |
|---|---|---|
Accept |
客户端可接受的内容类型 | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
Accept-Charset |
客户端可接受的字符集 | utf-8, iso-8859-1;q=0.5 |
Accept-Encoding |
客户端可接受的内容编码 | gzip, deflate, br |
Accept-Language |
客户端可接受的语言 | zh-CN,zh;q=0.9,en;q=0.8 |
Authorization |
认证信息,用于HTTP认证 | Basic dXNlcjpwYXNzd29yZA== |
Cookie |
客户端存储的Cookie信息 | sessionId=abc123; userId=456 |
Expect |
客户端期望的特定服务器行为 | 100-continue |
From |
用户邮箱地址 | user@example.com |
Host |
请求的目标主机和端口 | www.example.com:443 |
If-Match |
条件请求,仅当ETag匹配时执行 | "737060cd8c284d8af7ad3082f209582d" |
If-Modified-Since |
条件请求,仅当资源在指定时间后修改过 | Sat, 29 Oct 2022 19:43:31 GMT |
If-None-Match |
条件请求,仅当ETag不匹配时执行 | "737060cd8c284d8af7ad3082f209582d" |
If-Range |
条件请求,用于断点续传 | "737060cd8c284d8af7ad3082f209582d" |
If-Unmodified-Since |
条件请求,仅当资源在指定时间后未修改过 | Sat, 29 Oct 2022 19:43:31 GMT |
Max-Forwards |
限制代理转发的最大次数 | 10 |
Proxy-Authorization |
代理服务器认证信息 | Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ== |
Range |
请求部分内容(断点续传) | bytes=0-499 |
Referer |
请求来源页面的URL | https://www.google.com/ |
TE |
传输编码的优先级 | trailers, deflate;q=0.5 |
User-Agent |
客户端软件信息 | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 |
CORS相关请求头字段 #
| 头字段 | 说明 | 示例值 |
|---|---|---|
Access-Control-Request-Method |
CORS预检请求的方法 | DELETE |
Access-Control-Request-Headers |
CORS预检请求的头字段 | X-PINGOTHER, Content-Type |
自定义请求头字段 #
| 头字段 | 说明 | 示例值 |
|---|---|---|
X-Forwarded-For |
客户端真实IP地址 | client, proxy1, proxy2 |
X-Forwarded-Host |
原始主机名 | original-host.example.com |
X-Forwarded-Proto |
原始协议 | https |
X-Real-IP |
客户端真实IP | 192.168.1.1 |
X-Request-ID |
请求唯一标识符 | f058ebd6-02f7-4d3f-942e-904344e8cde5 |
HTTP响应头完整列表 #
通用响应头字段 #
| 头字段 | 说明 | 示例值 |
|---|---|---|
Cache-Control |
控制缓存行为,指定缓存机制 | max-age=3600, public |
Connection |
控制网络连接,如保持连接或关闭 | keep-alive |
Date |
响应消息创建日期时间 | Tue, 15 Nov 2022 08:12:31 GMT |
Pragma |
HTTP/1.0向后兼容的缓存控制 | no-cache |
Trailer |
指示在分块传输编码后出现的头字段 | Expires |
Transfer-Encoding |
传输编码方式 | chunked |
Upgrade |
服务器支持的协议升级 | HTTP/2.0, SHTTP/1.3 |
Via |
响应经过的代理服务器信息 | 1.0 fred, 1.1 nowhere.com (Apache/1.1) |
Warning |
关于消息状态的警告信息 | 199 Miscellaneous warning |
专用响应头字段 #
| 头字段 | 说明 | 示例值 |
|---|---|---|
Accept-Ranges |
服务器支持的范围请求单位 | bytes |
Age |
响应在代理缓存中存在的时间(秒) | 3600 |
ETag |
资源的特定版本标识符 | "737060cd8c284d8af7ad3082f209582d" |
Location |
重定向目标URL | https://www.example.com/new-location |
Proxy-Authenticate |
代理服务器要求的认证方式 | Basic realm="Access to the internal site" |
Retry-After |
客户端应多久后重试请求 | 120 或 Fri, 31 Dec 2022 23:59:59 GMT |
Server |
服务器软件信息 | Apache/2.4.1 (Unix) |
Vary |
缓存变体的决定因素 | Accept-Encoding |
WWW-Authenticate |
服务器要求的认证方式 | Basic realm="Access to the staging site" |
实体响应头字段 #
| 头字段 | 说明 | 示例值 |
|---|---|---|
Allow |
资源支持的HTTP方法 | GET, HEAD, PUT, POST, DELETE |
Content-Encoding |
内容编码方式 | gzip |
Content-Language |
内容语言 | zh-CN |
Content-Length |
内容长度(字节) | 348 |
Content-Location |
替代位置获取内容 | /index.html |
Content-MD5 |
内容的MD5校验和 | Q2hlY2sgSW50ZWdyaXR5IQ== |
Content-Range |
部分内容在整个内容中的位置 | bytes 21010-47021/47022 |
Content-Type |
内容的媒体类型 | text/html; charset=utf-8 |
Expires |
响应过期时间 | Thu, 01 Dec 2022 16:00:00 GMT |
Last-Modified |
资源最后修改时间 | Tue, 15 Nov 2022 12:45:26 GMT |
安全相关响应头字段 #
| 头字段 | 说明 | 示例值 |
|---|---|---|
Strict-Transport-Security |
强制使用HTTPS | max-age=31536000; includeSubDomains |
Content-Security-Policy |
内容安全策略 | default-src 'self' |
X-Content-Type-Options |
防止MIME类型嗅探 | nosniff |
X-Frame-Options |
防止点击劫持 | DENY 或 SAMEORIGIN |
X-XSS-Protection |
启用XSS保护 | 1; mode=block |
Referrer-Policy |
控制Referer头信息 | no-referrer-when-downgrade |
Feature-Policy |
控制浏览器功能使用 | geolocation 'self' |
CORS相关响应头字段 #
| 头字段 | 说明 | 示例值 |
|---|---|---|
Access-Control-Allow-Origin |
CORS允许的源 | * 或 https://example.com |
Access-Control-Allow-Methods |
CORS允许的方法 | GET, POST, PUT |
Access-Control-Allow-Headers |
CORS允许的头字段 | X-Requested-With, Content-Type |
Access-Control-Allow-Credentials |
CORS是否允许凭证 | true |
Access-Control-Max-Age |
CORS预检请求缓存时间 | 86400 |
Access-Control-Expose-Headers |
CORS暴露给客户端的头字段 | Content-Length, X-Kuma-Revision |
自定义响应头字段 #
| 头字段 | 说明 | 示例值 |
|---|---|---|
X-Powered-By |
服务器技术栈 | Express |
X-RateLimit-Limit |
速率限制上限 | 1000 |
X-RateLimit-Remaining |
剩余请求次数 | 999 |
X-RateLimit-Reset |
速率限制重置时间 | 1350085394 |
X-Request-ID |
请求唯一标识符 | f058ebd6-02f7-4d3f-942e-904344e8cde5 |
实际应用示例 #
HTTP请求示例 #
http
GET /api/users HTTP/1.1
Host: api.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: application/json
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
Cookie: sessionId=abc123; userId=456
Cache-Control: no-cache
解释说明:
Host指定了目标服务器User-Agent标识了客户端软件Accept表示期望接收JSON格式数据Authorization包含了认证令牌Cookie携带了会话信息
HTTP响应示例 #
http
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 348
Cache-Control: max-age=3600, public
Server: nginx/1.18.0
Date: Tue, 15 Nov 2022 08:12:31 GMT
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
Access-Control-Allow-Origin: *
Strict-Transport-Security: max-age=31536000
{"users": [...]}
解释说明:
Content-Type指定了响应体的格式Cache-Control设置了缓存策略X-RateLimit-*头字段提供了API限流信息Access-Control-Allow-Origin允许跨域请求Strict-Transport-Security强制使用HTTPS
HTTP头字段的重要性 #
HTTP头字段在Web通信中扮演着至关重要的角色:
- 性能优化:缓存控制、内容压缩、连接复用等
- 安全防护:CSP、HSTS、XSS保护等安全策略
- 内容协商:语言、编码、媒体类型的选择
- 状态管理:Cookie、会话管理等
- 调试和监控:请求追踪、性能监控等
最佳实践 #
- 始终设置适当的
Content-Type头 - 使用
Cache-Control合理控制缓存策略 - 实施安全头字段保护应用安全
- 避免暴露敏感信息的头字段
- 合理使用CORS头字段处理跨域请求
通过合理配置HTTP头字段,可以显著提升Web应用的性能、安全性和用户体验。
最后更新:2026-02-05