Headers
注意:此功能在Web Workers中可用。
Fetch API 的Headers
接口允许你对HTTP 请求和响应头执行各种操作。这些操作包括从请求头列表中检索、设置、添加到和删除头。
你可以通过Request.headers
和Response.headers
属性检索Headers
对象,并使用Headers()
构造函数创建新的Headers
对象。
注意:你可以通过阅读我们的HTTP 头参考来了解更多关于可用头的信息。
描述
修改限制
某些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()
-
返回一个
迭代器
,允许遍历此对象中包含的所有键/值对。 Headers.forEach()
-
对
Headers
对象中的每个键/值对执行一次提供的函数。 Headers.get()
-
返回
Headers
对象中具有给定名称的头的所有值的字符串
序列。 -
返回一个数组,其中包含与响应关联的所有
Set-Cookie
头的值。 Headers.has()
-
返回一个布尔值,指示
Headers
对象是否包含某个头。 Headers.keys()
-
返回一个
迭代器
,允许你遍历此对象中包含的键/值对的所有键。 Headers.set()
-
为
Headers
对象中现有头的设置新值,或者如果头不存在,则添加该头。 Headers.values()
-
返回一个
迭代器
,允许你遍历此对象中包含的键/值对的所有值。
注意:需要明确的是,Headers.set()
和Headers.append()
之间的区别在于,如果指定的头已存在并且确实接受多个值,则Headers.set()
将用新值覆盖现有值,而Headers.append()
将把新值附加到值集的末尾。请参阅其专用页面以获取示例代码。
注意:当迭代 Header 值时,它们会自动按字典顺序排序,并且来自重复头名称的值会合并。
示例
在以下代码段中,我们使用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 |
浏览器兼容性
BCD 表格仅在启用 JavaScript 的浏览器中加载。