此页面由社区从英文翻译而来。了解更多并加入 MDN Web Docs 社区。

View in English Always switch to English

Headers

基线
广泛可用

自 2017年3月 起,此特性已在主流浏览器中得到支持,可在大多数设备和浏览器版本中正常使用。

备注: 此特性在 Web Worker 中可用。

Fetch API 的 Headers 接口允许你对 HTTP 请求和响应头执行各种操作。这些操作包括检索,设置,添加和删除。

一个 Headers 对象具有关联的标头列表,它最初为空,由零个或多个键值对组成。你可以使用类似于 append() 这样的方法添加(参见示例)到这个对象中。在该接口的所有方法中,标头名称由不区分大小写的字节序列匹配。

出于安全考虑,某些标头只能由用户代理控制。这些标头包括禁止修改的请求标头和禁止修改的响应标头。

一个 Headers 对象也有一个关联的 guard,它具有不可变的值,request,request-no-cors,response或none。这会影响 set(), delete(), 和append() 方法 改变 header. 参考更多信息,请看 Guard.

你可以通过 Request.headers 和Response.headers 属性检索一个Headers对象,并使用 Headers.Headers() 构造函数创建一个新的Headers 对象。

一个实现了Headers 的对象可以直接用于 for...of 结构中,而不是 entries(): for (var p of myHeaders) 等价于 for (var p of myHeaders.entries()).

备注:你可以通过阅读我们的 HTTP headers参考找到更多关于可用 headers 的信息。

构造函数

Headers.Headers()

创建一个新的 Headers 对象。

方法

Headers.append()

给现有的 header 添加一个值,或者添加一个未存在的 header 并赋值。

Headers.delete()

从 Headers 对象中删除指定 header.

Headers.entries()

以 迭代器 的形式返回 Headers 对象中所有的键值对。

Headers.get()

以 String 的形式从 Headers 对象中返回指定 header 的全部值。

Headers.has()

以布尔值的形式从 Headers 对象中返回是否存在指定的 header.

Headers.keys()

以迭代器的形式返回 Headers 对象中所有存在的 header 名。

Headers.set()

替换现有的 header 的值,或者添加一个未存在的 header 并赋值。

Headers.values()

以迭代器的形式返回 Headers 对象中所有存在的 header 的值。

备注:值得注意的是,在 header 已存在或者有多个值的状态下Headers.set() 和 Headers.append()的使用有如下区别,Headers.set() 将会用新的值覆盖已存在的值,但是Headers.append()会将新的值添加到已存在的值的队列末尾。请参相关词条内的示例代码。

备注:如果你尝试传入名称不是有效的 HTTP 标头名称的引用,则所有 Headers 方法都将引发 TypeError。如果标头具有不可变的 Guard,则突变操作会引发 TypeError。在任何其他失败情况下,它们都会无声地失败。

示例

在这个小示例中,我们将会通过 Headers 构造函数创建一个新的 header,先使用 append() 方法添加一个 header,然后通过 get() 方法返回这个 header 的值

js
let myHeaders = new Headers();

myHeaders.append("Content-Type", "text/xml");

myHeaders.get("Content-Type");
// should return 'text/xml'

规范

规范
Fetch
# headers-class

浏览器兼容性

参见