HTTP 标头

HTTP 标头(header)允许客户端和服务器通过 HTTP 请求(request)或者响应(response)传递附加信息。在 HTTP/1.X,一个标头包括它的名称(不区分大小写),一个冒号(:),可选且会被忽略的空格,最后是它的值(例如 Allow: POST)。在 HTTP/2 或更高的版本中,标头在开发者工具中展示为小写(accept: */*),对于特殊的伪标头组则会以冒号作为前缀(:status: 200)。你可以在 HTTP 消息页面找到每个协议版本的有关信息和语法。

自定义专用的标头之前可以与 X- 前缀一起使用,但是这种用法在 2012 年被弃用,因为当非标准字段在 RFC 6648 中成为标准时,它会带来很多不便;其他的标头在 IANA HTTP 字段名注册表中列出,其原始内容在 RFC 4229 中定义。IANA 注册表列出了标头及其状态信息

根据不同的消息上下文,标头可以分为:

请求标头

包含请求的资源,或请求资源的客户端的更多信息。

响应标头

包含有关响应的额外信息,例如响应的位置或者提供响应的服务器。

表示标头

包含资源体的信息,例如其 MIME 类型或者应用的编码/压缩方案。

负载标头

包含与负载数据的形式无关的表示信息,包含内容长度和用于传输的编码。

标头也可以根据代理处理它们的方式进行分组:

端到端(end-to-end)标头

这类标头必须被传输到最终的消息接收者:请求的服务器或者响应的客户端。中间的代理必须重新转发这些未经修改的标头,并且必须缓存它们。

逐跳(hop-by-hop)标头

这类标头仅对单次传输连接有意义,并且不得由代理重传或者缓存。注意,只能使用 Connection 标头来设置逐跳标头。

验证

WWW-Authenticate

定义应该用于访问资源的身份验证方法。

Authorization

包含用于向服务器验证用户代理身份的凭据。

Proxy-Authenticate

定义应用于访问代理服务器后面资源的身份验证方法。

Proxy-Authorization

包含用于向代理服务器验证用户代理的凭据。

缓存

Age

对象在代理缓存中的时间(以秒为单位)。

Cache-Control

请求和响应中缓存机制的指令。

Clear-Site-Data

清除与请求网站相关联的浏览器数据(例如 cookie、storage、cache)。

Expires

响应被视为过时的日期/时间。

指定一组规则,定义 URL 的查询参数将如何影响缓存匹配。这些规则规定了是否应将具有不同 URL 参数的同一 URL 存为单独的浏览器缓存条目。

条件

Last-Modified

资源的最后修改日期,用于比较同一个资源的多个版本。它不如 ETag 准确,但在某些环境中更容易计算。使用 If-Modified-SinceIf-Unmodified-Since 的条件请求使用此值来更改请求的行为。

ETag

标识资源版本的唯一字符串。使用 If-MatchIf-None-Match 的条件请求使用此值来更改请求的行为。

If-Match

使请求有条件,并且仅当存储的资源与给定的 ETag 之一匹配时才应用该方法。

If-None-Match

使请求有条件,并且仅当存储的资源与给定的 ETag 都匹配时才应用该方法。这用于更新缓存(用于安全请求),或防止在资源已存在时上传新资源。

If-Modified-Since

使请求有条件,并期望资源在给定日期后被修改时才请求传输该资源。这用于仅在缓存过期时传输数据。

If-Unmodified-Since

使请求有条件,并期望资源只有在给定日期后未被修改时才请求传输资源。这确保了特定范围的新片段与先前片段的一致性,或者在修改现有文档时实现乐观的(optimistic)并发控制系统。

Vary

确定如何匹配请求标头,以决定是否可以使用缓存的响应,还是从源服务器请求新的响应。

连接管理

Connection

控制当前事务完成后网络连接是否保持打开状态。

Keep-Alive

控制持久连接应保持打开状态的时间。

内容协商

更多详情请见内容协商

Accept

通知服务器可以发回的数据类型

Accept-Encoding

可用于返回的资源的编码算法,通常是压缩算法

Accept-Language

通知希望服务器返回的人类语言。这是仅仅一个提示而不一定由用户完全控制:服务器应该始终注意不要覆盖用户的明确选择(比如从下拉列表中选择的语言)。

Accept-Patch

请求内容协商响应标头,在 PATCH 请求中用于通告服务器能够理解的媒体类型

Accept-Post

请求内容协商响应标头,在 POST 请求中用于通告服务器能够理解的媒体类型

控制

Expect

表示服务器正确处理请求需要满足的期望。

Max-Forwards

使用 TRACE 时,指示请求在被反映到发送方之前可以执行的最大跃点数。

包含先前由服务器使用 Set-Cookie 标头发送然后被存储的 HTTP cookie

将 cookie 从服务器发送到用户代理。

CORS

更多信息请见 CORS 文档

Access-Control-Allow-Credentials

指示当凭据标志为 true 时,是否可以暴露对请求的响应。

Access-Control-Allow-Headers

用在对预检请求的响应中,指示实际的请求中可以使用哪些 HTTP 标头。

Access-Control-Allow-Methods

指定访问资源允许的 HTTP 方法,用在对预检请求的响应中。

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-Digest 实验性

提供 HTTP 消息中构建的字节流(消息内容)的摘要,依赖于 Content-EncodingContent-Range

Repr-Digest 实验性

在传输之前提供指定形式的目标资源的校验摘要。 不同于 Content-Digest,这个摘要不考虑 Content-EncodingContent-Range

Want-Content-Digest 实验性

表达希望使用 Content-Digest。 类似于 Want-Repr-Digest,但是使用 Content-

Want-Repr-Digest 实验性

表达希望使用 Repr-Digest。 类似于 Want-Content-Digest,但是使用 Repr-

消息主体信息

Content-Length

资源的大小,以十进制字节数表示。

Content-Type

指示资源的媒体类型。

Content-Encoding

用于指定压缩算法。

Content-Language

描述面向受众的人类语言,以便用户可以根据自己的首选语言进行区分。

Content-Location

指示返回数据的备用位置。

代理

Forwarded

包含来自代理服务器面向客户端一侧的信息,当请求路径中涉及代理时,这些信息会被更改或丢失。

Via

由代理添加,包括正向和反向代理,并且可以出现在请求标头和响应标头中。

范围请求

HTTP 范围请求允许客户端向服务器请求资源的一部分。范围请求可用于支持随机访问的媒体播放器、知道只需要大文件的一部分的数据工具以及允许用户暂停和恢复下载的下载管理器等应用程序。

Accept-Ranges

指示服务器是否支持范围请求,如果支持,范围可以用哪个单位表示。

Range

指示服务器应返回的文档部分。

If-Range

创建一个条件范围请求,只有在给定的 etag 或日期与远程资源匹配时才会满足。用于防止从资源的不兼容版本下载两个范围。

Content-Range

指示部分消息在完整正文消息中的位置。

重定向

Location

指示要将页面重定向到的 URL。

Refresh

指示浏览器重新加载页面或重定向到另一个页面。采用与带有 http-equiv="refresh"meta 元素相同的值。

请求上下文

From

包含发送请求的用户代理的实际掌控者的电子邮箱地址。

Host

指定服务器的域名(用于虚拟主机)和服务器侦听的 TCP 端口号(可选)。

Referer

前一个网页的地址,表示从该网页链接(进入)到当前请求的页面。

Referrer-Policy

规定了在发出的请求中应包含哪些引用信息,这些信息会在 Referer 标头中发送。

User-Agent

包含一个特征字符串,允许网络协议对端识别发起请求的用户代理软件的应用程序类型、操作系统、软件供应商或软件版本。

响应上下文

Allow

列出资源所支持的 HTTP 方法的集合。

Server

包含了处理请求的源服务器所用到的软件相关信息。

安全

Cross-Origin-Embedder-Policy(COEP)

允许服务器为给定文档声明嵌入器策略。

Cross-Origin-Opener-Policy(COOP)

防止其他域打开/控制窗口。

Cross-Origin-Resource-Policy(CORP)

防止从其他域读取应用了此标头的资源的响应。见 CORP 的解释文章

Content-Security-PolicyCSP

控制用户代理可以为给定页面加载哪些资源。

Content-Security-Policy-Report-Only

允许 Web 开发人员通过监控而不是强制执行其效果来试验策略。这些由 JSON 文档组成的违规报告包含通过 HTTP POST 请求发送到指定的 URI。

Expect-CT 已弃用

允许网站选择报告和执行证书透明度要求,以检测该网站使用的错误颁发的证书。

Permissions-Policy

提供一种机制来允许和拒绝在网站自己的框架和它嵌入的 <iframe> 中使用浏览器特性。

Reporting-Endpoints 实验性

响应标头,允许网站所有者指定一个或多个用于接收错误的端点,如 CSP 违规报告、Cross-Origin-Opener-Policy 报告或其他一般违规。

Strict-Transport-SecurityHSTS

强制使用 HTTPS 而不是 HTTP 进行通信。

Upgrade-Insecure-Requests

向服务器发送一个信号,表达客户端对加密和身份验证响应的偏好,还表达它可以成功处理 upgrade-insecure-requests 指令。

X-Content-Type-Options

禁用 MIME 嗅探并强制浏览器使用 Content-Type 中给出的类型。

X-Frame-Options (XFO)

指示是否应允许浏览器在 <frame><iframe><embed><object> 中呈现页面。

X-Permitted-Cross-Domain-Policies

跨域策略文件可能会授予客户端,例如 Adobe Acrobat 或 Apache Flex 等,处理跨域数据的权限,否则这些客户端将因同源策略而受到限制。X-Permitted-Cross-Domain-Policies 标头会覆盖该策略文件,此时客户端仍然阻止不希望的请求。

X-Powered-By

可能由托管环境或其他框架设置,并包含有关它们的信息,但不会为应用程序或其访问者提供任何用处。取消设置此标头以避免暴露潜在的漏洞。

X-XSS-Protection

启用跨站点脚本过滤。

fetch 元数据请求标头

fetch 元数据请求标头提供有关发起请求的上下文的信息。这允许服务器根据请求的来源和资源将如何使用来决定是否允许请求。

Sec-Fetch-Site

指示请求发起者的源与其目标源之间的关系。它是一个结构化标头,其值可能是具有以下值的令牌 cross-sitesame-originsame-sitenone

Sec-Fetch-Mode

向服务器指示请求的模式。它是一个结构化标头,其值可能是具有以下值的令牌 corsnavigateno-corssame-originwebsocket

Sec-Fetch-User

指示导航请求是否由用户激活触发。它是一个结构化标头,其值为布尔值,因此可能的值为 ?0 表示 false,?1 表示 true。

Sec-Fetch-Dest

指示请求到服务器的目的地。它是一个结构化标头,其值可能是具有以下值的令牌 audioaudioworkletdocumentembedemptyfontimagemanifestobjectpaintworkletreportscriptserviceworkersharedworkerstyletrackvideoworkerxslt

以下请求标头严格来说不是“fetch 元数据请求标头”,但同样提供了有关如何使用资源的上下文的信息。服务器可能会使用它们来修改其缓存行为或返回的信息:

Sec-Purpose

指示请求的目的,当目的不是立即被用户代理使用时。标头现在有一个可能的值 prefetch,表示资源正在被提前获取,以备将来可能的导航。

Service-Worker-Navigation-Preload

在 service worker 启动期间,在提前请求中发送的请求头,用于使用 fetch() 请求资源。该值由 NavigationPreloadManager.setHeaderValue() 设置,可用于通知服务器应返回与正常 fetch() 操作不同的资源。

服务器发送事件

Reporting-Endpoints

用于指定浏览器应使用报告 API 发送警告和错误报告的服务器端点的响应标头。

Report-To 已弃用 非标准

用于指定浏览器应使用报告 API 发送警告和错误报告的服务器端点的响应标头。

传输编码

Transfer-Encoding

指定用于将资源安全地传输给用户的编码形式。

TE

指定用户代理愿意接受的传输编码。

Trailer

允许发送方在分块消息的末尾包含其他字段。

WebSocket

WebSocket APIWebSocket 握手中使用的标头:

Sec-WebSocket-Accept

响应标头,指示服务器愿意升级到 WebSocket 连接。

Sec-WebSocket-Extensions

在请求中,该标头指示客户端支持的 WebSocket 扩展,按优先顺序排列。 在响应中,它指示服务器从客户端的偏好中选择的扩展。

Sec-WebSocket-Key

请求标头,包含一个密钥,用于验证客户端明确打算打开 WebSocket

Sec-WebSocket-Protocol

在请求中,该标头指示客户端支持的子协议,按优先顺序排列。 在响应中,它指示服务器从客户端的偏好中选择的子协议。

Sec-WebSocket-Version

在请求中,该标头指示客户端使用的 WebSocket 协议版本。 在响应中,只有当服务器不支持请求的协议版本时才会发送,并列出服务器支持的版本。

其他

Alt-Svc

用于列出访问该服务的替代方式。

Alt-Used

用于标识正在使用的替代服务。

Date

包含消息的创建日期和时间。

此实体标头字段提供了一种在 HTTP 标头中序列化一个或多个链接的方法。它在语义上等同于 HTML 的 <link> 元素。

Retry-After

指示用户代理在进行后续请求前应等待的时间。

Server-Timing

传达在一个给定请求—响应周期中的一个或多个参数或描述。

Service-Worker

包含在 Service Worker 脚本资源的获取请求中。 此标头有助于管理员记录服务工作线程脚本请求以进行监控。

Service-Worker-Allowed

通过在服务工作线程脚本的响应中包含此标头来移除路径限制

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

服务器使用 Critical-CHAccept-CH 来指定接受的客户端提示,也是重要的客户端提示

下面列出了不同类别的客户端提示。

用户代理客户端提示

用户代理客户端提示是请求标头,其提供有关用户代理、它运行的平台/架构以及在用户代理或平台上设置的用户首选项信息:

Sec-CH-UA 实验性

用户代理的品牌(brand)和版本。

Sec-CH-UA-Arch 实验性

用户代理的底层平台架构。

Sec-CH-UA-Bitness 实验性

用户代理的底层 CPU 架构位数(例如“64”位)。

Sec-CH-UA-Form-Factor 实验性

用户代理的形状因素(form factor),描述用户如何与用户代理交互。

Sec-CH-UA-Full-Version 已弃用

用户代理的完整语义版本字符串。

Sec-CH-UA-Full-Version-List 实验性

用户代理品牌(brand)列表中每个品牌的完整版本。

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 已弃用 实验性 非标准

请求标头,客户端设备像素比(DPR),即每个 CSS 像素对应的物理设备像素数。

Viewport-Width 已弃用 非标准

请求表头,提供以 CSS 像素为单位的布局视口宽度。

Width 已弃用 实验性

一个数字,表示以物理像素为单位的所需资源宽度(即图像的固有尺寸)。

网络客户端提示

网络客户端提示允许服务器根据用户选择以及网络带宽和延迟来选择发送什么信息。

客户端连接到服务器的近似带宽,以 Mbps 为单位。属于网络信息 API

ECT 实验性

最匹配连接延迟和带宽的有效连接类型(“网络配置文件”)。属于网络信息 API

RTT 实验性

应用层往返时间(RTT),以毫秒为单位,其中包括服务器处理时间。属于网络信息 API

Save-Data 实验性

字符串 on 指示用户代理偏好减少数据使用量。

隐私

DNT 已弃用 非标准

请求标头,指示用户的跟踪偏好(Do Not Track)。因被全球隐私控制(GPC,使用 Sec-GPC 标头传达给服务器,而客户端可通过 navigator.globalPrivacyControl 访问)取代而被弃用。

Tk 已弃用 非标准

响应标头,指示应用于相应请求的跟踪状态。与 DNT 结合使用。

Sec-GPC 非标准 实验性

表示用户是否同意网站或服务向第三方出售或共享其个人信息。

安全

Origin-Agent-Cluster 实验性

响应标头,用于指示关联的 Document 应放置在基于来源的代理集群中。 这种隔离允许用户代理更有效地为代理集群分配特定于实现的资源,如进程或线程。

服务器发送的事件

NEL 实验性

定义了一种机制,使开发人员能够声明网络错误报告策略。

主题 API

主题 API 为开发人员提供了一种机制来实现诸如基于兴趣的广告(IBA)之类的用例。见主题 API

Observe-Browsing-Topics 实验性 非标准

响应头,用于标记从调用站点的 URL 推断出的感兴趣的主题,正如在对启用主题 API 的特性生成的请求的响应中观察到的。

Sec-Browsing-Topics 实验性 非标准

请求标头,为当前用户和相关请求发送选定的主题,广告技术平台使用这些主题来选择要显示的个性化广告。

其他

Accept-Signature 实验性

客户端可以发送 Accept-Signature 标头字段以指示利用任何可用的签名并指示其支持哪些签名类型。

Early-Data 实验性

指示请求已在 TLS 早期数据中传送。

Set-Login 实验性

由联合身份提供商(IdP)发送的响应标头,用于设置其登录状态,这意味着是否有任何用户在当前浏览器上登录到 IdP。 这由浏览器存储,并用于 FedCM API

Signature 实验性

Signature 标头字段传达交换的签名列表,每个签名都附有有关如何确定签名的权限和刷新该签名的信息。

Signed-Headers 实验性

Signed-Headers 标头字段标识要包含在签名中的响应标头字段的有序列表。

Speculation-Rules 实验性

提供 URL 列表,指向推测规则的 JSON 定义资源。当响应是 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 预取,这是一种浏览器主动对用户可能选择的链接以及文档引用的项目(包括图像、CSS、JavaScript 等)的 URL 执行域名解析的功能。

X-Robots-Tag 非标准

X-Robots-Tag HTTP 标头用于指示如何在公共搜索引擎结果中对网页进行索引。标头实际上相当于 <meta name="robots" content="…">

弃用的标头

Pragma 已弃用

特定于实现的标头可能会在请求—响应链的任何地方产生各种影响。用于向后兼容 Cache-Control 标头尚不存在的 HTTP/1.0 缓存。

Warning 已弃用

关于可能出现的问题的一般警告信息。

贡献

你可以通过编写新条目或改进现有条目来提供帮助。

参见