标头
Baseline 广泛可用 *
注意:此功能在 Web Workers 中可用。
Headers 接口是 Fetch API 的一部分,允许你对 HTTP 请求和响应头 执行各种操作。这些操作包括检索、设置、添加和删除请求头列表中的头。
你可以通过 Request.headers 和 Response.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 对象的创建方式来设置。
- 对于使用
Headers()构造函数创建的头,没有修改限制。 - 对于
Request对象的头- 如果请求的
mode是no-cors,你可以修改任何 CORS 安全列出的请求头 名称/值。 - 否则,你可以修改任何 非禁止的请求头 名称/值。
- 如果请求的
- 对于
Response对象的头- 如果响应是通过
Response.error()或Response.redirect()创建的,或者来自fetch()调用,则该头是不可变的,无法修改。 - 否则,如果响应是通过
Response()或Response.json()创建的,你可以修改任何 非禁止的响应头 名称/值。
- 如果响应是通过
如果你尝试传递一个无效的 HTTP 头名称 的引用,所有 Headers 方法都会抛出一个 TypeError。如果头是不可变的,修改操作会抛出 TypeError。在任何其他失败情况下,它们会静默失败。
构造函数
Headers()-
创建一个新的
Headers对象。
实例方法
Headers.append()-
在
Headers对象中,向现有头追加新值,或者在头不存在时添加该头。 Headers.delete()-
从
Headers对象中删除一个头。 Headers.entries()-
返回一个
iterator,允许遍历该对象中包含的所有键/值对。 Headers.forEach()-
为
Headers对象中的每个键/值对执行一次提供的函数。 Headers.get()-
在具有给定名称的
Headers对象中,返回一个包含该头所有值的String序列。 -
返回一个数组,其中包含与响应关联的所有
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() 返回该头的值。
const myHeaders = new Headers();
myHeaders.append("Content-Type", "text/xml");
myHeaders.get("Content-Type"); // should return 'text/xml'
通过向构造函数传递数组的数组或对象字面量,也可以实现相同的功能。
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 |
浏览器兼容性
加载中…