网络与安全

HTTP Headers

2026-04-02

前言

HTTP 请求头(Headers)是 HTTP 报文的重要组成部分,用于在客户端与服务器之间传递元信息。按照语义可划分为:通用头(General)、请求头(Request)、响应头(Response)以及实体头(Entity / Representation Headers)。不同类别关注的维度不同:连接管理、协商机制、缓存策略以及资源描述等。

需要注意,随着 HTTP/2 与 HTTP/3 的发展,部分头部(如 Connection)已被废弃或语义发生变化,但在工程实践(尤其是 HTTP/1.1)中仍然具有重要参考价值。

一、通用头

通用头既可出现在请求中,也可出现在响应中,主要用于描述消息本身或连接层行为。

常用

Cache-Control

  • 版本:HTTP/1.1 引入(HTTP/1.0 主要依赖 Pragma / Expires
  • 作用:精细控制缓存策略(现代缓存体系核心头)
  • 常见取值
    • no-store:禁止缓存(最严格)
    • no-cache:使用缓存前必须重新验证
    • private:仅允许浏览器缓存(禁止共享缓存,如 CDN)
    • public:允许任何缓存(包括代理/CDN)
    • max-age=秒:资源最大存活时间
    • s-maxage=秒:仅作用于共享缓存(优先级高于 max-age)

Connection

  • 版本:HTTP/1.1(HTTP/2 起被废弃)
  • 作用:控制连接是否复用
  • 常见取值
    • keep-alive:保持长连接(HTTP/1.1 默认行为)
    • close:请求后关闭连接
  • 说明:HTTP/2 使用多路复用,不再依赖该头

次要

Date:表示报文发送时间(GMT)

Pragmano-cache; HTTP/1.0;现已被 Cache-Control 替代

Transfer-Encodingchunked HTTP/2 已不再使用

Upgrade:用于协议升级(如 HTTP → WebSocket)

Via: 表示经过的代理节点(调试链路用)

二、请求头

请求头由客户端发送,用于描述客户端能力、请求条件以及身份信息。

常用

Host

  • 版本:HTTP/1.1 强制要求
  • 作用:指定目标主机(支持虚拟主机)
  • 示例Host: http://www.example.com

Authorization

  • 作用:认证信息
  • 常见类型
  • Basic base64(username:password)
  • Bearer token(OAuth / JWT)

Cookie

  • 作用:携带客户端状态(会话、登录态)
  • 特点:由浏览器自动维护

User-Agent

  • 作用:标识客户端环境(浏览器、系统)
  • 用途:兼容性处理、日志分析

Accept

  • 作用:声明可接受的数据类型
  • 常见取值application/json text/html

Accept-Encoding

  • 作用:声明支持的压缩算法
  • 常见值gzip deflate br

Accept-Language

  • 作用:语言协商
  • 示例Accept-Language: en-US, zh-CN;q=0.9

If-Modified-Since

  • 配合 Last-Modified ;未修改 → 返回 304

If-None-Match

  • 配合 ETag ;精度高于时间戳

次要

  • Referer:来源页面(拼写历史遗留)
  • Expect: 100-continue:大请求预校验
  • From:用户邮箱(几乎不用)
  • If-Match:强一致性校验

三、响应头

响应头由服务器返回,用于描述响应内容、缓存策略以及跨域控制。

常用

Content-Type

  • 作用:声明响应体类型
  • 标准格式Content-Type: type/subtype; parameter=value
  • 常见取值application/json text/html text/plain image/* charset=UTF-8 multipart/form-data

Set-Cookie

  • 作用:服务器向客户端写入 Cookie
  • 常见属性HttpOnly Secure SameSite

ETag

  • 资源唯一标识(哈希/版本号)
  • 用于协商缓存

Last-Modified

  • 资源最后修改时间

Expires

  • 版本:HTTP/1.0
  • 绝对过期时间(已被 Cache-Control 替代)

Access-Control-Allow-Origin

  • 作用:CORS 核心头
  • 取值* www.example.com

次要

  • Server:服务器信息(可隐藏)
  • Location:重定向地址(301/302)
  • Vary:缓存维度(如 Accept-Encoding
  • Content-Length:响应体长度

四、实体头

实体头用于描述 HTTP 报文中的“实体内容”(即请求体或响应体),在 HTTP/1.1 语义中与响应头有部分重叠。

常用

Content-Type

  • 描述实体数据类型,同上

Content-Length

  • 实体大小(字节)
  • Transfer-Encoding 互斥

Content-Encoding

  • 实体压缩方式
  • 常见值:gzip, br

Content-Range

  • 作用:支持断点续传 / 分片加载
  • 示例Content-Range: bytes 0-499/1234

次要

  • Content-MD5:完整性校验(已较少使用)
  • Content-Location:资源 URI
  • Content-Language:资源语言

总结

HTTP 头部的本质是“协议控制面”,其核心价值体现在四个方面:

  1. 缓存体系Cache-Control + ETag 构成现代缓存机制核心
  2. 内容协商Accept* 系列实现多版本资源分发
  3. 连接与性能优化Connection、压缩相关头提升传输效率
  4. 安全与鉴权AuthorizationCookie、CORS 头控制访问边界

在实际前端开发中,应重点关注:

  • 请求侧:AuthorizationCookieAccept
  • 响应侧:Content-Type、缓存头(ETag / Cache-Control
  • 跨域:Access-Control-*

这些头部直接决定了接口的可用性、性能与安全性。

参考文献

面试专题:简析http请求头(headers)四部分 - 腾讯云