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
-
定义了应用于访问资源的身份验证方法。
-
包含用于向服务器验证用户代理身份的凭据。
Proxy-Authenticate
-
定义了应用于访问代理服务器后面的资源的身份验证方法。
-
包含用于向代理服务器验证用户代理身份的凭据。
缓存
Age
-
对象在代理缓存中已存在的时间,以秒为单位。
Cache-Control
-
用于请求和响应中缓存机制的指令。
Clear-Site-Data
-
清除与请求网站相关的浏览数据(例如 Cookie、存储、缓存)。
Expires
-
在此日期/时间之后,响应被视为过时。
No-Vary-Search
实验性-
指定了一组规则,定义了 URL 的查询参数将如何影响缓存匹配。这些规则规定了具有不同 URL 参数的同一 URL 是否应作为单独的浏览器缓存条目保存。
条件请求
Last-Modified
-
资源的最后修改日期,用于比较同一资源的多个版本。它不如
ETag
准确,但在某些环境中更容易计算。使用If-Modified-Since
和If-Unmodified-Since
的条件请求使用此值来更改请求的行为。 ETag
-
一个唯一的字符串,标识资源的版本。使用
If-Match
和If-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
Accept-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-Encoding
和Content-Range
。 Repr-Digest
实验性-
在传输前提供目标资源所选表示的摘要。与
Content-Digest
不同,该摘要不考虑Content-Encoding
或Content-Range
。 Want-Content-Digest
实验性-
表示希望获得
Content-Digest
标头。它是Want-Repr-Digest
的Content-
类似物。 Want-Repr-Digest
实验性-
表示希望获得
Repr-Digest
标头。它是Want-Content-Digest
的Repr-
类似物。
完整性策略
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
标头中指定的哪些偏好。这是一个仅用于响应的标头,提供有关偏好处理的透明度。
代理
范围请求
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
-
包含一个特征字符串,允许网络协议对等方识别请求软件用户代理的应用程序类型、操作系统、软件供应商或软件版本。
响应上下文
安全
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
-
跨域策略文件可以授予客户端(如 Adobe Acrobat 或 Apache Flex 等)处理跨域数据的权限,否则这些数据会因同源策略而受限。
X-Permitted-Cross-Domain-Policies
标头会覆盖此类策略文件,以便客户端仍然阻止不需要的请求。 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
(false)和?1
(true)。 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
-
一个响应标头,用于在使用报告 API 时,指定浏览器应向其发送警告和错误报告的服务器端点。
Report-To
已弃用 非标准-
一个响应标头,用于在使用报告 API 时,指定浏览器应向其发送警告和错误报告的服务器端点。
传输编码
Transfer-Encoding
-
指定用于安全地将资源传输给用户的编码形式。
TE
-
指定用户代理愿意接受的传输编码。
Trailer
-
允许发送方在分块消息的末尾包含附加字段。
WebSocket
WebSocket API 在 WebSocket 握手中使用的标头
Sec-WebSocket-Accept
-
一个响应标头,表示服务器愿意升级到 WebSocket 连接。
Sec-WebSocket-Extensions
-
在请求中,此标头按优先顺序指示客户端支持的 WebSocket 扩展。在响应中,它指示服务器从客户端的偏好中选择的扩展。
Sec-WebSocket-Key
-
一个请求标头,包含一个密钥,用于验证客户端明确打算打开一个
WebSocket
。 Sec-WebSocket-Protocol
-
在请求中,此标头按优先顺序指示客户端支持的子协议。在响应中,它指示服务器从客户端的偏好中选择的子协议。
Sec-WebSocket-Version
-
在请求中,此标头指示客户端使用的 WebSocket 协议版本。在响应中,仅当服务器不支持请求的协议版本时才会发送此标头,并列出服务器支持的版本。
其他
Alt-Svc
-
用于列出访问此服务的备用方式。
Alt-Used
-
用于标识正在使用的备用服务。
Date
-
包含消息的创建日期和时间。
Link
-
此实体标头字段提供了一种在 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
实验性
下面列出了不同类别的客户端提示。
用户代理客户端提示
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
已弃用 非标准Viewport-Width
已弃用 非标准-
请求标头提供客户端的布局视口宽度,单位为 CSS 像素。
Width
已弃用 非标准-
请求标头指示期望的资源宽度,单位为物理像素(图像的固有尺寸)。
网络客户端提示
网络客户端提示允许服务器根据用户选择以及网络带宽和延迟来选择发送哪些信息。
压缩字典传输
压缩字典传输是一种使用共享压缩字典来减小 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 文档时,这些规则将被添加到文档的推测规则集中。
-
包含一个或多个来自导致推测的推测规则的标签值,以便服务器可以识别是哪个规则导致了推测,并可能阻止它们。
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">
元素。