HTTP请求头与响应头 #

什么是HTTP请求头和响应头? #

HTTP(超文本传输协议)是Web通信的基础协议,它使用请求-响应模型。在HTTP通信中,请求头和响应头是HTTP消息的重要组成部分,它们包含了关于请求或响应的元数据信息。

HTTP请求头(Request Headers) #

HTTP请求头是客户端(如浏览器)发送给服务器的HTTP请求中的头部信息。它们提供了关于客户端、请求内容、期望的响应格式等信息。请求头帮助服务器理解如何处理请求。

HTTP响应头(Response Headers) #

HTTP响应头是服务器发送给客户端的HTTP响应中的头部信息。它们提供了关于服务器、响应内容、缓存策略、安全策略等信息。响应头帮助客户端理解如何处理接收到的响应。

HTTP头字段的分类 #

HTTP头字段可以根据其功能分为以下几类:

  1. 通用头字段(General Headers):适用于请求和响应消息
  2. 请求头字段(Request Headers):仅适用于请求消息
  3. 响应头字段(Response Headers):仅适用于响应消息
  4. 实体头字段(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 客户端应多久后重试请求 120Fri, 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 防止点击劫持 DENYSAMEORIGIN
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通信中扮演着至关重要的角色:

  1. 性能优化:缓存控制、内容压缩、连接复用等
  2. 安全防护:CSP、HSTS、XSS保护等安全策略
  3. 内容协商:语言、编码、媒体类型的选择
  4. 状态管理:Cookie、会话管理等
  5. 调试和监控:请求追踪、性能监控等

最佳实践 #

  • 始终设置适当的Content-Type
  • 使用Cache-Control合理控制缓存策略
  • 实施安全头字段保护应用安全
  • 避免暴露敏感信息的头字段
  • 合理使用CORS头字段处理跨域请求

通过合理配置HTTP头字段,可以显著提升Web应用的性能、安全性和用户体验。

最后更新:2026-02-05