HTTP 标头

HTTP 标头允许客户端和服务器在请求或响应消息中传递附加信息。在 HTTP/1.X 中,标头是一个不区分大小写的名称,后跟一个冒号,然后是可选的将被忽略的空白,最后是其值(例如:Allow: POST)。在 HTTP/2 及以上版本中,标头在开发者工具中查看时会以小写形式显示(accept: */*),并且对于一组特殊的伪标头:status: 200),会以冒号作为前缀。你可以在 HTTP 消息页面找到关于各协议版本语法的更多信息。

自定义专有标头在历史上一直使用 X- 前缀,但这一惯例在 2012 年被弃用,因为当非标准字段在 RFC 6648 中成为标准时,它造成了不便;其他标头列在 IANA HTTP 字段名称注册表中,其原始内容在 RFC 4229 中定义。IANA 注册表列出了各种标头,包括关于其状态的信息

标头可以根据其上下文进行分组

请求标头

包含有关要获取的资源的更多信息,或有关请求资源的客户端的更多信息。

响应标头

包含有关响应的附加信息,例如其位置或提供它的服务器。

表示标头

包含有关资源正文的信息,例如其 MIME 类型,或应用的编码/压缩。

载荷标头

包含有关载荷数据的独立于表示的信息,包括内容长度和用于传输的编码。

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

端到端标头

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

逐跳标头

这些标头仅对单个传输级连接有意义,并且不得由代理重新传输或缓存。请注意,只有逐跳标头可以通过 Connection 标头设置。

身份验证

WWW-Authenticate

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

Authorization

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

Proxy-Authenticate

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

Proxy-Authorization

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

缓存

Age

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

Cache-Control

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

Clear-Site-Data

清除与请求网站相关的浏览数据(例如 Cookie、存储、缓存)。

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

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

Vary

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

连接管理

Connection

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

Keep-Alive

控制持久连接应保持打开多长时间。

内容协商

有关更多详细信息,请参阅内容协商文章

Accept

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

Accept-Encoding

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

Accept-Language

通知服务器期望其发回的人类语言。这是一个提示,并不一定完全由用户控制:服务器应始终注意不要覆盖明确的用户选择(例如从下拉菜单中选择语言)。

Accept-Patch

一个请求内容协商响应标头,它宣告服务器在 PATCH 请求中能够理解哪种媒体类型

Accept-Post

一个请求内容协商响应标头,它宣告服务器在 POST 请求中能够理解哪种媒体类型

控制

Expect

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

Max-Forwards

使用 TRACE 时,指示请求在被反射回发送方之前可以进行的最大跳数。

Cookie

包含先前由服务器通过 Set-Cookie 标头发送的已存储的 HTTP Cookie

从服务器向用户代理发送 Cookie。

CORS

有关更多信息,请参阅 CORS 文档

Access-Control-Allow-Credentials

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

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

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

Repr-Digest 实验性

在传输前提供目标资源所选表示的摘要。与 Content-Digest 不同,该摘要不考虑 Content-EncodingContent-Range

Want-Content-Digest 实验性

表示希望获得 Content-Digest 标头。它是 Want-Repr-DigestContent- 类似物。

Want-Repr-Digest 实验性

表示希望获得 Repr-Digest 标头。它是 Want-Content-DigestRepr- 类似物。

完整性策略

Integrity-Policy

确保用户代理加载的所有(特定类型的)资源都具有子资源完整性保证。

Integrity-Policy-Report-Only

报告用户代理加载的资源中,如果强制执行完整性策略(使用 Integrity-Policy 标头),将违反子资源完整性保证的资源。

消息正文信息

Content-Length

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

Content-Type

指示资源的媒体类型。

Content-Encoding

用于指定压缩算法。

Content-Language

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

Content-Location

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

偏好

客户端可以在请求中发送偏好,以指示请求和响应的可选行为。在客户端可能不清楚的情况下,服务器响应可以指示是否应用了某个偏好。浏览器没有通过这些标头发送偏好的原生处理方式;它们用于自定义的、特定于实现的客户端。

Prefer

指示在请求处理期间对特定服务器行为的偏好。例如,它可以请求最小响应内容(return=minimal)或异步处理(respond-async)。如果该标头不受支持,服务器将正常处理请求。

Preference-Applied

告知客户端服务器应用了 Prefer 标头中指定的哪些偏好。这是一个仅用于响应的标头,提供有关偏好处理的透明度。

代理

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-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)

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

X-Permitted-Cross-Domain-Policies

跨域策略文件可以授予客户端(如 Adobe Acrobat 或 Apache Flex 等)处理跨域数据的权限,否则这些数据会因同源策略而受限。X-Permitted-Cross-Domain-Policies 标头会覆盖此类策略文件,以便客户端仍然阻止不需要的请求。

X-Powered-By

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

X-XSS-Protection

启用跨站脚本过滤。

获取元数据请求标头

获取元数据请求标头提供了关于请求发起上下文的信息。服务器可以利用这些信息,根据请求的来源和资源的使用方式,来决定是否应允许该请求。

Sec-Fetch-Site

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

Sec-Fetch-Mode

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

Sec-Fetch-User

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

Sec-Fetch-Dest

指示请求的目的地。它是一个结构化标头,其值为一个令牌,可能的值为 audioaudioworkletdocumentembedemptyfontimagemanifestobjectpaintworkletreportscriptserviceworkersharedworkerstyletrackvideoworkerxslt

以下请求标头并非严格意义上的“获取元数据请求标头”,但也同样提供了关于资源将如何被使用的上下文信息。服务器可能会使用它们来修改其缓存行为或返回的信息。

Sec-Purpose

指示请求的目的,当目的不是用户代理的即时使用时。该标头目前有一个可能的值 prefetch,表示正在为可能的未来导航而预先获取资源。

Service-Worker-Navigation-Preload

在服务工作线程启动期间,在抢先请求 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-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 来指定接受的客户端提示也是关键客户端提示

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

用户代理客户端提示

UA 客户端提示是提供有关用户代理、其运行的平台/架构以及在用户代理或平台上设置的用户偏好信息的请求标头。

Sec-CH-UA 实验性

用户代理的品牌和版本。

Sec-CH-UA-Arch 实验性

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

Sec-CH-UA-Bitness 实验性

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

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

用户代理的形态因子,描述用户如何与用户代理交互。

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

请求标头指示期望的资源宽度,单位为物理像素(图像的固有尺寸)。

网络客户端提示

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

客户端到服务器连接的大致带宽,单位为 Mbps。这是 网络信息 API 的一部分。

ECT 实验性

最能匹配连接延迟和带宽的有效连接类型(“网络配置文件”)。这是 网络信息 API 的一部分。

RTT 实验性

应用层往返时间(RTT),单位为毫秒,包括服务器处理时间。这是 网络信息 API 的一部分。

Save-Data 实验性

一个字符串 on,表示用户代理偏好减少数据使用。

压缩字典传输

压缩字典传输是一种使用共享压缩字典来减小 HTTP 响应传输大小的方法,而不是使用 Brotli 压缩Zstandard 压缩中的标准静态字典。

Available-Dictionary 实验性

浏览器可以使用此请求标头来指示它拥有的最佳字典,供服务器用于压缩。

Dictionary-ID 实验性

当浏览器已有可用于某个资源的字典,并且服务器在 Use-As-Dictionary 标头中为该字典提供了 id 时使用。对可以使用该字典的资源的请求会带有 Available-Dictionary 标头和 Dictionary-ID 标头中的服务器提供的字典 id

Use-As-Dictionary 实验性

列出该字典在未来请求中可以使用的匹配标准。

隐私

DNT 已弃用 非标准

一个请求标头,指示用户的跟踪偏好(Do Not Track)。已弃用,推荐使用全局隐私控制(GPC),通过 Sec-GPC 标头与服务器通信,并可通过 navigator.globalPrivacyControl 供客户端访问。

Tk 已弃用 非标准

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

Sec-GPC 非标准 实验性

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

安全

Origin-Agent-Cluster 实验性

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

服务器发送事件

NEL 实验性

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

Topics API

Topics API 提供了一种机制,供开发者实现如兴趣导向广告(IBA)等用例。更多信息请参阅 Topics API 文档。

Observe-Browsing-Topics 实验性 非标准

一个响应标头,用于在对由启用 Topics API 的功能生成的请求的响应中,将从调用方网站的 URL 推断出的兴趣主题标记为已观察到。

Sec-Browsing-Topics 实验性 非标准

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

其他

Accept-Signature 实验性

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

Early-Data 实验性

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

Set-Login 实验性

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

Signature 实验性

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

Signed-Headers 实验性

Signed-Headers 标头字段标识了一个有序的响应标头字段列表,以包含在签名中。

Speculation-Rules 实验性

提供一个指向包含推测规则JSON 定义的文本资源的 URL 列表。当响应是 HTML 文档时,这些规则将被添加到文档的推测规则集中。

Sec-Speculation-Tags 实验性

包含一个或多个来自导致推测的推测规则的标签值,以便服务器可以识别是哪个规则导致了推测,并可能阻止它们。

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"> 元素。

已弃用的标头

Pragma 已弃用

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

Warning 已弃用

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

另见