HTTP 标头
HTTP 头部 允许客户端和服务器在 HTTP 请求或响应中传递附加信息。HTTP 头部由其不区分大小写的名称,后跟冒号 (:),然后是其值组成。值之前的空白字符将被忽略。
在历史上,自定义专有头部使用 X- 前缀,但这种约定在 2012 年 6 月被弃用,因为它在非标准字段成为 RFC 6648 中的标准时造成不便。其他头部列在 IANA HTTP 字段名称注册表 中,其原始内容是在 RFC 4229 中定义的。IANA 注册表列出头部,包括 其状态信息,其状态可能是“永久”(标准定义)、“临时”(新的)、“已弃用”(不推荐使用)或“已废弃”(不再使用)。
头部可以根据其上下文进行分组
- 请求头部
-
包含有关要获取的资源或请求该资源的客户端的更多信息。
- 响应头部
-
包含有关响应的附加信息,例如其位置或提供该响应的服务器。
- 表示头部
-
包含有关资源主体的信息,例如其 MIME 类型 或应用的编码/压缩。
- 有效载荷头部
-
包含与表示无关的有效载荷数据信息,包括内容长度和用于传输的编码。
头部还可以根据 代理 对它们的处理方式进行分组
- 端到端头部
-
这些头部必须传输到消息的最终接收者:对于请求,是服务器,对于响应,是客户端。中间代理必须以未修改的方式重新传输这些头部,并且缓存必须存储它们。
- 逐跳头部
-
这些头部仅对单个传输级连接有意义,并且不得由代理重新传输或缓存。请注意,只能使用
Connection头部设置逐跳头部。
认证
WWW-Authenticate-
定义访问资源时应使用的身份验证方法。
-
包含用于向服务器验证用户代理的凭据。
Proxy-Authenticate-
定义访问代理服务器后面的资源时应使用的身份验证方法。
-
包含用于向代理服务器验证用户代理的凭据。
缓存
Age-
对象在代理缓存中的时间(以秒为单位)。
Cache-Control-
请求和响应中缓存机制的指令。
Clear-Site-Data-
清除与请求网站关联的浏览数据(例如,cookie、存储、缓存)。
Expires-
响应被认为陈旧的日期/时间。
No-Vary-SearchExperimental-
指定一组规则,这些规则定义了 URL 的查询参数将如何影响缓存匹配。这些规则决定了具有不同 URL 参数的相同 URL 是否应另存为单独的浏览器缓存条目。
条件
Last-Modified-
资源的最后修改日期,用于比较同一资源的多个版本。它不如
ETag精确,但在某些环境中更易于计算。使用If-Modified-Since和If-Unmodified-Since的条件请求使用此值来改变请求的行为。 ETag-
一个唯一字符串,标识资源的版本。使用
If-Match和If-None-Match的条件请求使用此值来改变请求的行为。 If-Match-
使请求成为条件请求,并且仅当存储的资源与给定的 ETags 之一匹配时才应用该方法。
If-None-Match-
使请求成为条件请求,并且仅当存储的资源不与任何给定的 ETags 匹配时才应用该方法。这用于更新缓存(对于安全请求),或者在已存在资源时防止上传新资源。
If-Modified-Since-
使请求成为条件请求,并且期望仅当资源在给定的日期之后被修改时才传输资源。这用于仅在缓存过期时传输数据。
If-Unmodified-Since-
使请求成为条件请求,并且期望仅当资源在给定的日期之后未被修改时才传输资源。这确保了特定范围内的新的片段与以前的片段的一致性,或者在修改现有文档时实现乐观并发控制系统。
Vary-
确定如何匹配请求头部以决定是否可以使用缓存的响应,而不是从源服务器请求新的响应。
连接管理
Connection-
控制当前事务完成后网络连接是否保持打开状态。
Keep-Alive-
控制持久连接应保持打开多长时间。
内容协商
有关更多详细信息,请参阅 内容协商文章。
Accept-
通知服务器可以发回的类型的数据。
Accept-CharsetDeprecatedAccept-Encoding-
编码算法,通常是 压缩算法,它可以用于发回的资源。
Accept-Language-
通知服务器服务器预期发回的人类语言。这是一个提示,并不一定完全在用户的控制之下:服务器应始终注意不要覆盖显式用户选择(例如,从下拉菜单中选择语言)。
Accept-PatchAccept-Post
控制
Expect-
表示服务器需要满足的期望,才能正确处理请求。
Max-Forwards-
当使用
TRACE时,表示请求在被反射回发送者之前可以进行的最大跳数。
Cookie
-
包含服务器之前使用
Set-Cookie头部发送的存储的 HTTP cookie。 -
从服务器将 cookie 发送到用户代理。
CORS
有关更多信息,请参阅 CORS 文档。
Access-Control-Allow-Credentials-
指示当凭据标志为真时,对请求的响应是否可以公开。
Access-Control-Allow-Headers-
用于响应 预检请求,以指示在进行实际请求时可以使用哪些 HTTP 头部。
Access-Control-Allow-Methods-
在响应预检请求时,指定访问资源时允许的方法。
Access-Control-Allow-Origin-
指示响应是否可以共享。
Access-Control-Expose-Headers-
指示哪些头部可以作为响应的一部分公开,方法是列出它们的名称。
Access-Control-Max-Age-
指示预检请求的结果可以缓存多长时间。
Access-Control-Request-Headers-
在发出预检请求时使用,以让服务器知道在发出实际请求时将使用哪些 HTTP 头部。
Access-Control-Request-Method-
在发出预检请求时使用,以让服务器知道在发出实际请求时将使用哪些 HTTP 方法。
Origin-
指示提取的来源。
Timing-Allow-Origin-
指定允许查看通过 资源计时 API 的功能检索的属性值的来源,否则这些属性值将被报告为零,因为存在跨域限制。
下载
Content-Disposition-
指示传输的资源应该内联显示(没有该头的默认行为),还是应该像下载一样处理,浏览器应该显示“另存为”对话框。
完整性摘要
Content-DigestExperimental-
提供 摘要,该摘要是 HTTP 消息中帧化的八位字节流(消息内容)的摘要,它取决于
Content-Encoding和Content-Range。 DigestDeprecated Non-standard-
提供 摘要,用于资源。请参阅
Content-Digest和Repr-Digest。 Repr-DigestExperimental-
在传输之前提供目标资源的所选表示的 摘要。与
Content-Digest不同,摘要不会考虑Content-Encoding或Content-Range。 Want-Content-DigestExperimental-
声明对
Content-Digest头部的愿望。它是Want-Repr-Digest的Content-等效项。 Want-DigestDeprecated Non-standard-
表示对一个
Digest头部的请求。请参见Want-Content-Digest和Want-Repr-Digest。 Want-Repr-Digest实验性-
表示对一个
Repr-Digest头部的请求。它是Want-Content-Digest的Repr-类似物。
消息正文信息
Content-Length-
资源的大小,以十进制字节数表示。
Content-Type-
指示资源的媒体类型。
Content-Encoding-
用于指定压缩算法。
Content-Language-
描述面向用户的语言,以便用户可以根据自己的首选语言进行区分。
Content-Location-
指示返回数据的备用位置。
代理
范围请求
HTTP 范围请求 允许客户端从服务器请求资源的一部分。范围请求对于支持随机访问的媒体播放器、知道只需要大型文件一部分的数据工具以及允许用户暂停和恢复下载的下载管理器等应用程序很有用。
Accept-Ranges-
指示服务器是否支持范围请求,如果支持,则指示范围可以用哪个单位来表示。
Range-
指示服务器应该返回的文档部分。
If-Range-
创建一个条件范围请求,只有当给定的 etag 或日期与远程资源匹配时才满足。用于防止从资源的不兼容版本下载两个范围。
Content-Range-
指示部分消息在完整主体消息中的位置。
重定向
Location-
指示将页面重定向到的 URL。
刷新-
指示浏览器重新加载页面或重定向到另一个页面。取值与具有
http-equiv="refresh"的meta元素相同。
请求上下文
From-
包含控制请求用户代理的人类用户的互联网电子邮件地址。
Host-
指定服务器的域名(用于虚拟主机),以及(可选)服务器监听的 TCP 端口号。
Referer-
之前网页的地址,从该网页链接到当前请求的页面。
Referrer-Policy-
控制在
Referer头部中发送的哪些引用信息应包含在发出的请求中。 User-Agent-
包含一个特征字符串,该字符串允许网络协议对等体识别请求软件用户代理的应用程序类型、操作系统、软件供应商或软件版本。
响应上下文
安全性
Cross-Origin-Embedder-Policy(COEP)-
允许服务器为给定文档声明一个嵌入器策略。
Cross-Origin-Opener-Policy(COOP)-
阻止其他域打开/控制窗口。
Cross-Origin-Resource-Policy(CORP)-
阻止其他域读取应用此头的资源的响应。另请参见 CORP 说明文章。
Content-Security-Policy(CSP)-
控制用户代理允许为给定页面加载的资源。
Content-Security-Policy-Report-Only-
允许 Web 开发人员通过监控而非强制执行其效果来试验策略。这些违规报告由通过 HTTP
POST请求发送到指定 URI 的JSON 文档组成。 Expect-CT已弃用-
允许网站选择加入报告和执行证书透明度,以检测对该网站使用错误签发的证书。
Permissions-Policy-
提供了一种机制来允许和拒绝在网站自己的框架中以及在它嵌入的
<iframe>中使用浏览器功能。 Reporting-Endpoints实验性-
响应头,允许网站所有者指定一个或多个用于接收错误的端点,例如 CSP 违规报告、
Cross-Origin-Opener-Policy报告或其他通用违规行为。 Strict-Transport-Security(HSTS)-
强制使用 HTTPS 而不是 HTTP 进行通信。
Upgrade-Insecure-Requests-
向服务器发送一个信号,表示客户端偏好使用加密和身份验证的响应,并且可以成功处理
upgrade-insecure-requests指令。 X-Content-Type-Options-
禁用 MIME 推断,并强制浏览器使用
Content-Type中给定的类型。 X-Frame-Options(XFO)X-Permitted-Cross-Domain-Policies-
指定是否允许跨域策略文件(
crossdomain.xml)。该文件可以定义一个策略来授予客户端(例如 Adobe 的 Flash Player(现已过时)、Adobe Acrobat、Microsoft Silverlight(现已过时)或 Apache Flex)跨域处理数据的权限,否则这些数据将因同源策略 而受到限制。有关更多信息,请参见跨域策略文件规范。 X-Powered-By-
可能由托管环境或其他框架设置,包含有关它们的信息,但对应用程序或其访问者没有用。取消设置此标头以避免暴露潜在的漏洞。
X-XSS-Protection-
启用跨站点脚本过滤。
获取元数据请求头
获取元数据请求头 提供有关请求来源的信息。服务器可以使用它们根据请求的来源和资源的使用方式来决定是否允许请求。
Sec-Fetch-Site-
指示请求发起者来源与其目标来源之间的关系。它是一个结构化头,其值为一个令牌,可能的值为
cross-site、same-origin、same-site和none。 Sec-Fetch-Mode-
指示服务器的请求模式。它是一个结构化头,其值为一个令牌,可能的值为
cors、navigate、no-cors、same-origin和websocket。 Sec-Fetch-User-
指示导航请求是否由用户激活触发。它是一个结构化头,其值为一个布尔值,因此可能的值为
?0表示假,?1表示真。 Sec-Fetch-Dest-
指示请求的目标。它是一个结构化头,其值为一个令牌,可能的值为
audio、audioworklet、document、embed、empty、font、image、manifest、object、paintworklet、report、script、serviceworker、sharedworker、style、track、video、worker和xslt。
以下请求头并非严格意义上的“获取元数据请求头”,但同样提供了有关资源使用方式的信息。服务器可能会使用它们来修改其缓存行为,或者返回的信息
Sec-Purpose-
指示请求的目的,当目的不是用户代理的直接使用时。该标头目前有一个可能的值,
prefetch,表示正在预取资源以备将来可能的导航。 -
在服务工作程序启动期间,预取请求发送到
fetch()资源时发送的请求头。该值使用NavigationPreloadManager.setHeaderValue()设置,可用于通知服务器返回与正常fetch()操作不同的资源。
服务器发送的事件
Reporting-Endpoints-
响应头,用于指定服务器端点,当浏览器使用Reporting API 时,浏览器应将警告和错误报告发送到这些端点。
Report-To已弃用 非标准-
响应头,用于指定服务器端点,当浏览器使用Reporting API 时,浏览器应将警告和错误报告发送到这些端点。
传输编码
Transfer-Encoding-
指定用于安全地将资源传输到用户的编码形式。
TE-
指定用户代理愿意接受的传输编码。
Trailer-
允许发送者在分块消息的末尾包含额外的字段。
WebSocket
Sec-WebSocket-Accept-
从服务器发送到客户端,指示服务器愿意启动 WebSocket 连接。
Sec-WebSocket-Key-
从客户端发送到服务器,以确认它“确实希望”请求将 HTTP 客户端升级为 WebSocket。
其他
Alt-Svc-
用于列出到达此服务的备用方法。
Alt-Used-
用于识别正在使用的备用服务。
Date-
包含消息的起源日期和时间。
Link-
此实体头字段提供了一种在 HTTP 头部中序列化一个或多个链接的方法。它在语义上等效于 HTML
<link>元素。 Retry-After-
指示用户代理在发出后续请求之前应等待多长时间。
Server-Timing-
为给定的请求-响应周期通信一个或多个指标和描述。
Service-Worker-Allowed-
通过在Service Worker 脚本的响应中 包含此头,用于移除路径限制。
SourceMap-
将生成的代码链接到 源映射。
Upgrade-
此 HTTP/1.1(仅)头可用于将已建立的客户端/服务器连接升级到不同的协议(在相同的传输协议上)。例如,它可以用于客户端将连接从 HTTP 1.1 升级到 HTTP 2.0,或将 HTTP 或 HTTPS 连接升级到 WebSocket。
Priority-
提供有关特定连接上特定资源请求优先级的提示。该值可以在请求中发送以指示客户端优先级,或者在响应中发送(如果服务器选择重新排列请求的优先级)。
实验性标头
归因报告头
《归因报告 API》允许开发者衡量转化率——例如,当用户点击一个嵌入在一个网站上的广告,然后在供应商的网站上购买商品时——并访问有关这些转化的报告。它在不依赖第三方跟踪 cookie 的情况下实现这一点,而是依赖各种标头来注册与匹配以指示转化的 **来源** 和 **触发器**。
Attribution-Reporting-Eligible-
用于指示与当前请求相对应的响应是否有资格参加归因报告,方法是注册归因来源或触发器。
Attribution-Reporting-Register-Source-
作为对包含
Attribution-Reporting-Eligible标头的请求的响应的一部分包含在内,用于注册归因来源。 Attribution-Reporting-Register-Trigger-
作为对包含
Attribution-Reporting-Eligible标头的请求的响应的一部分包含在内,用于注册归因触发器。
客户端提示
HTTP 客户端提示 是一组请求标头,提供有关客户端的有用信息,例如设备类型和网络状况,并允许服务器优化针对这些状况的服务内容。
服务器使用 Accept-CH 主动地从客户端请求它们感兴趣的客户端提示标头。客户端可能会选择在后续请求中包含请求的标头。
Accept-CH-
服务器可以使用
Accept-CH标头字段或具有http-equiv属性的等效 HTML<meta>元素来宣传对客户端提示的支持。 Critical-CH实验性
以下是客户端提示的不同类别。
用户代理客户端提示
《UA 客户端提示》是一组请求标头,提供有关用户代理、其运行的平台/体系结构以及在用户代理或平台上设置的用户首选项的信息。
Sec-CH-UA实验性-
用户代理的品牌和版本。
Sec-CH-UA-Arch实验性-
用户代理的基础平台体系结构。
Sec-CH-UA-Bitness实验性-
用户代理的基础 CPU 架构位数(例如“64”位)。
Sec-CH-UA-Form-Factor实验性-
用户代理的形式因素,描述用户如何与用户代理交互。
Sec-CH-UA-Full-Version已弃用-
用户代理的完整版本字符串。
Sec-CH-UA-Full-Version-List实验性-
用户代理品牌列表中每个品牌的完整版本。
Sec-CH-UA-Mobile实验性-
用户代理正在移动设备上运行,或者更普遍地说,更喜欢“移动”用户体验。
Sec-CH-UA-Model实验性-
用户代理的设备型号。
Sec-CH-UA-Platform实验性-
用户代理的基础操作系统/平台。
Sec-CH-UA-Platform-Version实验性-
用户代理的基础操作系统版本。
Sec-CH-UA-WoW64实验性-
用户代理二进制文件是否在 64 位 Windows 上以 32 位模式运行。
Sec-CH-Prefers-Color-Scheme实验性-
用户对深色或浅色配色方案的偏好。
Sec-CH-Prefers-Reduced-Motion实验性-
用户对查看更少动画和内容布局变化的偏好。
Sec-CH-Prefers-Reduced-Transparency实验性-
请求标头指示用户代理对降低透明度的偏好。
设备客户端提示
Content-DPR已弃用 非标准-
响应标头用于确认图像设备到像素比率 (DPR),在请求中使用屏幕
DPR客户端提示来选择图像资源。 Device-Memory-
可用客户端 RAM 内存的大致数量。这是 设备内存 API 的一部分。
DPR已弃用 非标准-
请求标头提供客户端设备像素比率(每个 CSS 像素 的物理设备像素数)。
Viewport-Width已弃用 非标准-
请求标头提供客户端的布局视窗宽度,以 CSS 像素 为单位。
Width已弃用 非标准-
请求标头指示所需的资源宽度,以物理像素(图像的内在大小)为单位。
网络客户端提示
网络客户端提示允许服务器根据用户选择以及网络带宽和延迟来选择发送哪些信息。
隐私
DNT已弃用 非标准-
请求标头,指示用户的跟踪偏好(请勿跟踪)。已弃用,取而代之的是全局隐私控制 (GPC),它使用
Sec-GPC标头与服务器通信,并可通过navigator.globalPrivacyControl供客户端访问。 Tk已弃用 非标准-
响应标头,指示应用于相应请求的跟踪状态。与 DNT 结合使用。
Sec-GPC非标准 实验性-
指示用户是否同意网站或服务将他们的个人信息出售或共享给第三方。
安全性
Origin-Isolation实验性-
提供一种机制,允许 Web 应用程序隔离其来源。
服务器发送的事件
NEL实验性-
定义了一种机制,使开发人员能够声明网络错误报告策略。
主题 API
主题 API 为开发者提供了一种机制来实现诸如基于兴趣的广告 (IBA) 等用例。有关更多信息,请参阅 主题 API 文档。
Observe-Browsing-Topics实验性 非标准-
响应头用于标记从调用站点 URL 推断出的兴趣主题,这些主题在对由 启用主题 API 的功能 生成的请求的响应中被观察到。
Sec-Browsing-Topics实验性 非标准-
请求头,它将当前用户的所选主题与其关联的请求一起发送,这些主题由广告技术平台用于选择要显示的个性化广告。
其他
Accept-Push-Policy实验性-
客户端可以通过在请求中发送
Accept-Push-Policy头字段来表达对请求的所需推送策略。 Accept-Signature实验性-
客户端可以发送
Accept-Signature头字段,以指示其有意利用任何可用的签名,并指示它支持哪些类型的签名。 Early-Data实验性-
指示请求已通过 TLS 早期数据传递。
Origin-Agent-Cluster实验性-
响应头用于指示关联的
Document应放置在源键控的 代理集群 中。这种隔离允许用户代理更有效地为代理集群分配特定于实现的资源,例如进程或线程。 Push-Policy实验性-
一个
Push-Policy定义了服务器在处理请求时关于推送的行为。 Set-Login实验性-
由联合身份提供者 (IdP) 发送的响应头,用于设置其登录状态,即当前浏览器上是否有任何用户登录到 IdP。这将由浏览器存储,并由 FedCM API 使用。
Signature实验性-
该
Signature头字段传达了交换签名的列表,每个签名都附带了有关如何确定签名权限和刷新该签名的信息。 Signed-Headers实验性-
该
Signed-Headers头字段标识要包含在签名中的响应头字段的有序列表。 Speculation-Rules实验性-
提供指向包含 推测规则 JSON 定义的文本资源的 URL 列表。当响应是 HTML 文档时,这些规则将被添加到文档的推测规则集中。
Supports-Loading-Mode实验性-
由导航目标设置,以选择使用各种风险更高的加载模式。例如,跨域、同站点的 预渲染 需要
Supports-Loading-Mode值为credentialed-prerender。
非标准标头
X-Forwarded-For非标准-
标识通过 HTTP 代理或负载均衡器连接到 Web 服务器的客户端的源 IP 地址。
X-Forwarded-Host非标准-
标识客户端用于连接到您的代理或负载均衡器的原始请求主机。
X-Forwarded-Proto非标准-
标识客户端用于连接到您的代理或负载均衡器的协议 (HTTP 或 HTTPS)。
X-DNS-Prefetch-Control非标准-
控制 DNS 预取,这是一种功能,浏览器通过它主动对用户可能选择的链接以及文档引用的项目的 URL(包括图像、CSS、JavaScript 等)执行域名解析。
X-Robots-Tag非标准-
该
X-Robots-TagHTTP 头用于指示如何在公共搜索引擎结果中索引网页。该头与<meta name="robots" content="…">实际上是等效的。
已弃用标头
贡献
您可以通过 编写新条目 或改进现有条目来提供帮助。