标头

Baseline 广泛可用 *

此特性已得到良好确立,可跨多种设备和浏览器版本使用。自 2017 年 3 月起,所有浏览器均支持此特性。

* 此特性的某些部分可能存在不同级别的支持。

注意:此功能在 Web Workers 中可用。

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

你可以通过 Request.headersResponse.headers 属性获取 Headers 对象,并使用 Headers() 构造函数创建一个新的 Headers 对象。与使用纯对象相比,使用 Headers 对象发送请求会提供一些额外的输入清理。例如,它会将头名称规范化为小写,去除头值前后的空格,并阻止某些头被设置。

注意: 你可以通过阅读我们的 HTTP Headers 参考文档来了解更多可用的头。

描述

Headers 对象有一个关联的头列表,该列表最初为空,由零个或多个名称和值对组成。你可以使用 append() 等方法向列表中添加内容(参见 示例)。在此接口的所有方法中,头名称匹配时将忽略大小写,按字节序列进行比较。

实现 Headers 的对象可以直接用在 for...of 结构中,而不是使用 entries()for (const p of myHeaders) 等同于 for (const p of myHeaders.entries())

修改限制

某些 Headers 对象对 set()delete()append() 方法是否能修改头有修改限制。修改限制会根据 Headers 对象的创建方式来设置。

如果你尝试传递一个无效的 HTTP 头名称 的引用,所有 Headers 方法都会抛出一个 TypeError。如果头是不可变的,修改操作会抛出 TypeError。在任何其他失败情况下,它们会静默失败。

构造函数

Headers()

创建一个新的 Headers 对象。

实例方法

Headers.append()

Headers 对象中,向现有头追加新值,或者在头不存在时添加该头。

Headers.delete()

Headers 对象中删除一个头。

Headers.entries()

返回一个 iterator,允许遍历该对象中包含的所有键/值对。

Headers.forEach()

Headers 对象中的每个键/值对执行一次提供的函数。

Headers.get()

在具有给定名称的 Headers 对象中,返回一个包含该头所有值的 String 序列。

Headers.getSetCookie()

返回一个数组,其中包含与响应关联的所有 Set-Cookie 头的值。

Headers.has()

返回一个布尔值,指示 Headers 对象是否包含某个头。

Headers.keys()

返回一个 iterator,允许遍历该对象中包含的所有键/值对的键。

Headers.set()

Headers 对象中,为现有头设置新值,或者在头不存在时添加该头。

Headers.values()

返回一个 iterator,允许遍历该对象中包含的所有键/值对的值。

注意: 需要明确的是,Headers.set()Headers.append() 之间的区别是,如果指定的头已经存在且接受多个值,Headers.set() 会用新值覆盖现有值,而 Headers.append() 会将新值追加到现有值集合的末尾。请参阅它们各自的页面以获取示例代码。

注意: 当迭代头的值时,它们会自动按字典顺序排序,并且来自重复头名称的值会被合并。

示例

在下面的代码片段中,我们使用 Headers() 构造函数创建一个新的头,然后使用 append() 向其添加一个新头,最后使用 get() 返回该头的值。

js
const myHeaders = new Headers();

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

通过向构造函数传递数组的数组或对象字面量,也可以实现相同的功能。

js
let myHeaders = new Headers({
  "Content-Type": "text/xml",
});

// or, using an array of arrays:
myHeaders = new Headers([["Content-Type", "text/xml"]]);

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

规范

规范
Fetch
# headers-class

浏览器兼容性

另见